Hibernate setResultTransformer in标准
准则API中setResultTransformer方法的用途是什么?有人能用一个简单的例子来解释这一点吗?我读了javadocs,但不能清楚地理解它们Hibernate setResultTransformer in标准,hibernate,criteria,hibernate-criteria,Hibernate,Criteria,Hibernate Criteria,准则API中setResultTransformer方法的用途是什么?有人能用一个简单的例子来解释这一点吗?我读了javadocs,但不能清楚地理解它们 关于,不使用setProjections()的条件查询的默认结果转换器将是ROOT\u实体 如果我们有一个学生与系有很多关系,那么查询可能如下所示 Session session = (Session) getEntityManager().getDelegate(); Criteria crit = session.creat
关于,不使用setProjections()的条件查询的默认结果转换器将是
ROOT\u实体
如果我们有一个学生与系有很多关系,那么查询可能如下所示
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
此查询将返回重复项。但将结果变压器设置为
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
现在,当Hibernate封送结果时,结果将是不同的。(或者我是说拆封吗?)
如果您不希望Hibernate以列表的形式返回查询,而是希望以列表的形式处理结果,那么
crit.setResultTransformer(CriteriaSpecification.PROJECTION)
简单地说:当您执行条件时:您希望结果集成为特定对象,您可以像这样使用它:例如:
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
应该与ResultSet
实体匹配。从文档中,我可以看到ROOT\u别名的术语:引用条件查询的“ROOT”实体的别名。在这种情况下,“根”一词代表什么?我无法理解root在本例中指的是什么。请解释,“root”代表创建Criteria实例时使用的任何类。在我的例子中,根是Student。因此,通过调用crit.list()将结果作为学生对象列表返回。除非您要求将结果转换作为投影,否则在这种情况下,它将是一个对象列表。(另外,我正在编辑我的原始示例以删除限制,以便查询将返回重复项。)工作起来很有魅力。好提示。谢谢