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