Kai*_*itz 5 java hibernate group-by criteria
我有一个Criteria-Query,它连接第二个表B,从表A中选择实体.问题是,这个查询多次从表A返回一些实体.但我需要结果是截然不同的.
使用Criteria.DISTINCT_ROOT_ENTITY是没用的,因为这会在执行SQL-Query后过滤掉多次出现.因此,当我将结果限制为20次点击时,我最终只有4次,尽管有更多条目符合我的查询.
在纯SQL中我只是可以向查询添加"GROUP BY ID",一切都很好,因为只使用表B的连接,从表A中选择实体.但是使用Criteria-API我不能这样做.添加"GROUP BY"的唯一方法是使用Projections.但是,我最后得到的是标量值,而不是我班级的真实实例.使用SQL限制也不起作用,因为hibernate在我的"GROUP BY"-clause之后添加了一个含糊的"1 = 1".:(
有任何想法吗?
可以编写 Hibernate 可用来返回实体的实际 SQL 查询。因此,如果您确实需要,您可以绕过 HQL,并使用 GROUP BY 准确编写您想要的查询。
详细信息请参见此处。
例如,您可以在 hbm.xml 文件中定义如下查询:
<sql-query name="exampleQuery">
<query-param name="param" type="int"/>
<return alias="x" class="foo.bar.X"/>
<return alias="y" class="foo.bar.Y"/>
<![CDATA[
select {x.*}, {y.*}
from XEntity x
inner join YEntity y on y.xId = x.id
where y.value = :param
]]>
</sql-query>
Run Code Online (Sandbox Code Playgroud)
请注意 {x. } 和 {y. 用于选择实体 X 和实体 Y 的所有属性的简写语法
| 归档时间: |
|
| 查看次数: |
11253 次 |
| 最近记录: |