Hibernate: How to get result from query with multiple classes

后端 未结 4 815
眼角桃花
眼角桃花 2020-12-23 17:09

If my query contains one class, like:

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

then I iterate

相关标签:
4条回答
  • 2020-12-23 17:37

    You can do that using Tuples I believe, but more importantly, if your Group and User is related like that query seems to suggest User should have a Group field (don't use groupId in your User class, hibernate should sort this out for you). If that's the case you can simply query it using select u from User u join fetch u.group g where g.groupId = :id (then set the id using query.setParameter(1, id);.

    The fetch keyword in that query makes it an eager load so both objects will be returned to hibernate which will return the User object to you. Access the Group object using user.getGroup().

    0 讨论(0)
  • 2020-12-23 17:39
    for (Object[] result : query.list()) {
        User user = (User) result[0];
        Group group = (Group) result[1];
    }
    
    0 讨论(0)
  • 2020-12-23 17:40

    When you select a single entity, query.list() will return a List of Object containing your entities.

    When you select multiple entities, query.list() will return a List of Object[]. Each element of the array reresents a separate entity.

    Read more here: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-select

    0 讨论(0)
  • 2020-12-23 17:45

    Also you can create a constructor and return a object:

    Assuming that the class Family has an appropriate constructor - as an actual typesafe Java object:

    select new Family(mother, mate, offspr)
    from DomesticCat as mother
    join mother.mate as mate
    left join mother.kittens as offspr
    

    Or a list:

    select new list(mother, offspr, mate.name)
    from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr
    

    http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-select

    0 讨论(0)
提交回复
热议问题