我曾经使用:
org.hibernate.Criteria criteria = ...
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
相当于新版本:
javax.persistence.criteria.CriteriaQuery criteria = ...
criteria.distinct(true);
谢谢!
答案 0 :(得分:0)
首先,这里没有new
或old
,这些都不是同一回事。
这是两个完全不同的接口,具有不同的规格。
是javax.persistence.Criteria
包的接口,它是Java EE6规范的一部分,而不是Hibernate
规范的一部分。
是org.hibernate
规范的一部分,是Hibernate
的接口。
要回答您的问题,这两个代码并不完全相同,因为criteria.distinct(true)
将消除查询中的重复项,而CriteriaSpecification.DISTINCT_ROOT_ENTITY
会将每一行视为根实体的不同实例。
请参阅 Criteria.DISTINCT_ROOT_ENTITY vs Projections.distinct 了解两者之间的区别的详细信息。