条件 API 中 setResultTransformer 方法的用途是什么?有人可以用一个简单的例子来解释吗?我阅读了 javadocs,但我无法清楚地理解它们。
问候,
条件 API 中 setResultTransformer 方法的用途是什么?有人可以用一个简单的例子来解释吗?我阅读了 javadocs,但我无法清楚地理解它们。
问候,
不使用 setProjections() 的 Criteria 查询的默认 ResultTransformer 将是ROOT_ENTITY
.
如果我们有 Student 与 Department 的多对多关系,则查询可能如下所示...
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
此查询将返回重复项。但是设置ResultTransformer
为...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
现在,当 Hibernate 编组结果时,结果将是不同的。(或者我的意思是解组?)
如果您不希望 Hibernate 将查询作为 a 返回,List<Student>
但更愿意将结果作为 a 处理,List<Object[]>
则
crit.setResultTransformer(CriteriaSpecification.PROJECTION)
简单地说:当您执行标准时:您希望结果集成为特定对象,您可以像这样使用它:例如:
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
应该与 ResultSet
实体匹配。