Hibernate:如何从多个类的查询中获取结果

yay*_*aya 25 java hibernate hql

如果我的查询包含一个类,例如:

query = session.createQuery("select u from User as u");
queryResult = query.list();
Run Code Online (Sandbox Code Playgroud)

然后我迭代它,哪里queryResultUser类的对象.

那么如何从包含多个类的查询中获取结果呢?例如:

select u, g from User as u, Group as g where u.groupId = g.groupId and g.groupId = 1
Run Code Online (Sandbox Code Playgroud)

小智 29

for (Object[] result : query.list()) {
    User user = (User) result[0];
    Group group = (Group) result[1];
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*4no 6

你可以使用Tuples来做到这一点我相信,但更重要的是,如果你的组和用户是相关的,那么查询似乎建议User应该有一个Group字段(不要在你的User类中使用groupId,hibernate应该为你排序).如果是这种情况,你可以简单地使用它来查询select u from User u join fetch u.group g where g.groupId = :id(然后使用设置id query.setParameter(1, id);.

fetch查询中的关键字使其成为一个急切的加载,因此两个对象都将返回到hibernate,这将返回User对象.使用user.getGroup()访问Group对象.


Luk*_*pec 5

当您选择一个单一的实体,query.list()将返回ListObject包含您的实体。

当您选择多个实体,query.list()将返回ListObject[]。数组的每个元素都代表一个单独的实体。

在此处阅读更多信息:http : //docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-select