What is the use of setResultTransformer method in criteria API? Can someone explain this with a simple example? I read the javadocs but i am not able to understand them clearly.
Regards,
What is the use of setResultTransformer method in criteria API? Can someone explain this with a simple example? I read the javadocs but i am not able to understand them clearly.
Regards,
The default ResultTransformer for a Criteria query which does not use setProjections() will be ROOT_ENTITY
.
If we have Student in a ManyToMany relationship to Department a query might look like this ...
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
This query will return duplicates. But set the ResultTransformer
as ...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
Now the results will be distinct when Hibernate marshalls the results. (Or do I mean unmarshalls?)
If you do not want Hibernate to return the query as a List<Student>
but prefer to handle the results as a List<Object[]>
then
crit.setResultTransformer(CriteriaSpecification.PROJECTION)
Simply: when you are doing the Criteria: you want the resultset to be into particular object the you can use it like:eg:
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
should match the ResultSet
Entity.
Projections.alias
e.g.: .add(Projections.alias(Projections.property("name"), "name"))
–
Eraste © 2022 - 2024 — McMap. All rights reserved.