休眠:如何从具有多个类的查询中获取结果

2022-09-01 11:53:34

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

query = session.createQuery("select u from User as u");
queryResult = query.list();

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

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

select u, g from User as u, Group as g where u.groupId = g.groupId and g.groupId = 1

答案 1
for (Object[] result : query.list()) {
    User user = (User) result[0];
    Group group = (Group) result[1];
}

答案 2

我相信你可以使用元组来做到这一点,但更重要的是,如果你的组和用户是相关的,就像那个查询似乎建议用户应该有一个组字段(不要在你的用户类中使用groupId,休眠应该为你解决这个问题)。如果是这种情况,您可以简单地查询它(然后使用 设置id。select u from User u join fetch u.group g where g.groupId = :idquery.setParameter(1, id);

该查询中的关键字使其成为一个预先加载,因此两个对象都将返回到休眠状态,这将向您返回 User 对象。使用 user.getGroup() 访问 Group 对象。fetch


推荐