这是我的情况,我有两个基本的POJO,我已经给它们一个简单的Hibernate映射:
Person
- PersonId
- Name
- Books
Book
- Code
- Description
我的MySQL查询返回的行长这样:
PERSONID NAME CODE DESCRIPTION
-------- ---------- ---- -----------
1 BEN 1234 BOOK 1
1 BEN 5678 BOOK 2
2 JOHN 9012 BOOK 3
我的 Hibernate 查询代码如下:
session.createSQLQuery("select personid, name, code, description from person_books")
.addEntity("person", Person.class)
.addJoin("book", "person.books")
.list();
这是根据Hibernate文档中的18.1.3节: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/querysql.html#d0e17464
我期望在我的列表中得到2个人对象,每个人对象都包含一组书籍对象:
List
|- Ben
| |- Book 1
| '- Book 2
'- John
'- Book 3
我实际看到的是这样的:
List
|- Object[]
| |- Ben
| | |- Book 1
| | '- Book 2
| '- Book 1
|- Object[]
| |- Ben
| | |- Book 1
| | '- Book 2
| '- Book 2
'- Object[]
|- John
| '- Book 3
'- Book 3
有人知道是否可以使用这种方法获得我想要的内容吗?
{p.*},{b.*}
还可以解决books
的附加子查询问题。 - v.ladynev.addEntity
方法解决了我的问题。在提出其他建议的类似问题后,我发现了这个问题 - https://stackoverflow.com/q/62554257/653539 - Tomáš Záluský