旧的Hibernate与新的-不同的结果规范

时间:2018-07-27 13:13:23

标签: hibernate

我曾经使用:

org.hibernate.Criteria criteria = ...
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

相当于新版本:

javax.persistence.criteria.CriteriaQuery criteria = ...
criteria.distinct(true);

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,这里没有newold,这些都不是同一回事。

这是两个完全不同的接口,具有不同的规格。

  1. CriteriaQuery

javax.persistence.Criteria包的接口,它是Java EE6规范的一部分,而不是Hibernate规范的一部分。

  1. Criteria

org.hibernate规范的一部分,是Hibernate的接口。

要回答您的问题,这两个代码并不完全相同,因为criteria.distinct(true)将消除查询中的重复项,而CriteriaSpecification.DISTINCT_ROOT_ENTITY会将每一行视为根实体的不同实例。

请参阅 Criteria.DISTINCT_ROOT_ENTITY vs Projections.distinct 了解两者之间的区别的详细信息。

相关问题