这是我的情况,我有两个基本的POJO,我已经给出了一个简单的hibernate映射:
Person
- PersonId
- Name
- Books
Book
- Code
- Description
Run Code Online (Sandbox Code Playgroud)
我的SQL查询返回如下所示的行:
PERSONID NAME CODE DESCRIPTION
-------- ---------- ---- -----------
1 BEN 1234 BOOK 1
1 BEN 5678 BOOK 2
2 JOHN 9012 BOOK 3
Run Code Online (Sandbox Code Playgroud)
我的hibernate查询如下所示:
session.createSQLQuery("select personid, name, code, description from person_books")
.addEntity("person", Person.class)
.addJoin("book", "person.books")
.list();
Run Code Online (Sandbox Code Playgroud)
这是每节:18.1.3的hibernate文档: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
Run Code Online (Sandbox Code Playgroud)
我实际看到的是:
List
|- Object[]
| |- Ben
| | …Run Code Online (Sandbox Code Playgroud) 我似乎在使用hibernate中的查询时遇到了一些困难.我正在两个表上执行内连接.
SELECT * FROM product p INNER JOIN warehouse w ON p.wid = w.id
Run Code Online (Sandbox Code Playgroud)
产品表:
id | name | wid | price | stock .....
Run Code Online (Sandbox Code Playgroud)
仓库表:
id | name | city | lat | long .....
Run Code Online (Sandbox Code Playgroud)
加入结果:
id | name | wid | price | stock | id | name | city | lat | long .....
Run Code Online (Sandbox Code Playgroud)
当我运行查询..
Session.createSQLQuery(this.query)
.addEntity("p", Product.class)
.addEntity("w", Warehouse.class).list();
Run Code Online (Sandbox Code Playgroud)
因此,对于每个结果,我得到一个包含a Product object和a 的对象Warehouse object.
这是预料之中的.问题是hibernate将产品的id和名称分配给仓库对象id和name属性.就创建Warehouse项目而言,好像连接结果中的前两列都过度了.Product对象始终包含正确的数据.
关于找到解决此问题的方法的任何建议,以便表示正确仓库数据的id和name列将非常受欢迎.
提前致谢.