新对象(..)中的HQL新列表(..)

时间:2012-09-11 23:19:40

标签: java hibernate object hql

我要求在HQL查询中创建新对象的位置。并且在新的Object构造函数中提供的参数之一是一些其他对象的列表。

例如:

SELECT new Object1(a.id,new List(SELECT b FROM table2 AS b WHERE b.id> 0))FROM table1 AS a;

所以我会得到一个Object1类型的对象,它有一个从另一个表中检索的列表。

请帮忙..

1 个答案:

答案 0 :(得分:0)

您无法按照计划在一个声明中执行此操作。以不同的方式思考。有一些可能性。

  1. 您可以创建Object1到table1和Object2到table2的映射。在Object1的映射中,您创建了与Object2的一对多关系,并且此关系包含select中的where条件"WHERE Object2.id>0"。那么你只需要HQL语句"from Object1" 这是最好的和最休眠式的可能性,但它只有在where条件总是相同的情况下才有效。然后你需要table1和table2之间的数据库关系(在你的例子中你没有,但可能存在,你只在你的例子中忘记了它)。

  2. 您只需先加载table1 SELECT new Object1(a.id) FROM Table1 a,然后在此列表的所有元素的循环中加载第二个表FROM table2 b WHERE b.id>0并将其放入Object1类型的元素中。

  3. 您只先加载table1 SELECT new Object1(a.id) FROM Table1 a,而在Object1中您有一个方法getObject2List(),在第一次调用时会加载table2中的元素列表。