相关疑难解决方法(0)

Hibernate Native SQL Query检索实体和集合

这是我的情况,我有两个基本的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)

java hibernate native-sql

19
推荐指数
3
解决办法
5万
查看次数

使用内部联接使用hibernate返回多个对象类型

我似乎在使用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列将非常受欢迎.

提前致谢.

java hibernate inner-join

18
推荐指数
3
解决办法
3万
查看次数

标签 统计

hibernate ×2

java ×2

inner-join ×1

native-sql ×1