2014-09-22 79 views
0

我正在为我的项目使用Spring-MVC。我有类如下:使用HQL从另一个表中检索属性

伪代码:

​​

对于A类和B类数据库中,我有“A级”为“B类”“ID”的外交。 现在使用HQL我想从A类和B类一起检索数据并显示它。我有B类主键并可以访问这两个表。我应该如何继续使用Hibernate查询语言。

+0

看到这个http://stackoverflow.com/questions/9715149/how-to-fetch-data-dynamically-from-two-tables-using-hql-annotations-im-posti它会有所帮助你 – JavaBeigner 2014-09-22 08:03:39

+0

谢谢askkuber,这很有帮助,虽然我面对的是OnetoMany关系,我的查询看起来像这样:“FROM User as LEFT JOIN FETCH u.messages WHERE u.id =”+ personId。那是对的吗? – 2014-09-22 08:12:30

+0

如果您在映射中遇到问题,可能是由于您如何生成了Hibernate Java文件?它从Hibernate工具还是手动? – JavaBeigner 2014-09-22 08:14:08

回答

0

由于您已经通过使用以下简单查询映射了两个表,所以您将获得两个表的数据。在这里,您将为每个classA对象获取一组classB的数据。

// Session session get your session object 
String hql = "FROM A"; 
Query query = session.createQuery(hql); 
List results = query.list(); 
+0

我认为有一些混淆。可以说A类是用户,B类是用于消息。当我给出classB(msg_id)的主键时,我想在数据库中查找msg_id,在哪个行中,然后检查user_id(外键),并从类User中检索记录。 – 2014-09-22 07:57:25

+0

你有双向映射吗?如果是的话,那么你所要求的查询就会像这样...选择b FROM classB b WHERE b.userId = b.classAObj.userId AND b.msgID =''; – Mahesh 2014-09-22 08:10:29

+0

没有双向映射,我以为我需要稍后处理类消息,我不会加入列。是否有必要进行双向映射? – 2014-09-22 08:15:02

相关问题