相关疑难解决方法(0)

Criteria.DISTINCT_ROOT_ENTITY与Projections.distinct

我对Hibernate很新.我发现我们可以使用以下两种不同的方式获得不同的结果.谁能告诉我他们之间有什么区别?何时使用其他?

Projections.distinct(Projections.property("id"));
Run Code Online (Sandbox Code Playgroud)

VS

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
Run Code Online (Sandbox Code Playgroud)

nhibernate hibernate distinct hibernate-criteria

40
推荐指数
1
解决办法
5万
查看次数

from子句中的JPA/hibernate子查询

我们使用JPA和hibernate作为提供程序,我们在FROM子句中有一个包含子查询的连接的查询,但是我们收到以下错误:

org.hibernate.hql.ast.QuerySyntaxException:意外令牌:(靠近第1行,第75列[SELECT sd FROM com.hp.amber.datamodel.entities.analysis.SnapshotDates sd,(SELECT max(x.changeDate)maxChangeDate,x .viewId,x.state FROM com.hp.amber.datamodel.entities.analysis.SnapshotDates x WHERE x.changeDate <:date AND x.viewId in(:viewIds)AND x.state =:state GROUP BY x.viewId, x.state)sd2 WHERE sd.viewId = sd2.viewId AND sd.state =:state AND sd.changeDate = sd2.maxChangeDate]

这是查询:

SELECT sd 
FROM SnapshotDates sd, 
     (SELECT max(x.changeDate) maxChangeDate, x.viewId, x.state 
      FROM SnapshotDates x
     WHERE x.changeDate<:date AND x.viewId in (:viewIds) AND x.state=:state
GROUP BY x.viewId, x.state) sd2
WHERE sd.viewId = sd2.viewId 
      AND sd.state = :state 
      AND sd.changeDate = sd2.maxChangeDate
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮忙

hibernate jpa subquery

20
推荐指数
1
解决办法
5万
查看次数

HQL:是否可以在子查询上执行INNER JOIN?

图

上图是我用于记录项目位置的数据库结构的简化版本.我编写了以下SQL查询,它返回每个位置的当前项目清单:

select * 
from ItemLocationLog l
inner join 
(select g.idItemLocationLog, max(g.dateTime) as latest
from ItemLocationLog g
group by g.idItem)
as i 
on l.idItem = i.idItem and l.dateTime = i.latest
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我想将其转换为HQL,但我没有找到在子查询上执行INNER JOIN的语法,看起来这似乎不受支持.有没有办法将上面的内容转换为HQL(或标准),或者在这种情况下我是否必须使用标准的SQL查询?谢谢.

sql hibernate hql

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

hibernate ×3

distinct ×1

hibernate-criteria ×1

hql ×1

jpa ×1

nhibernate ×1

sql ×1

subquery ×1