Qual è l'utilizzo del metodo setResultTransformer nei criteri API? Qualcuno può spiegarlo con un semplice esempio? Leggo i javadoc ma non sono in grado di capirli chiaramente.setResultTransformer in Criteri
saluti,
Qual è l'utilizzo del metodo setResultTransformer nei criteri API? Qualcuno può spiegarlo con un semplice esempio? Leggo i javadoc ma non sono in grado di capirli chiaramente.setResultTransformer in Criteri
saluti,
Il ResultTransformer di default per una query Criteri che non usa setProjections() saranno ROOT_ENTITY
.
Se abbiamo Studente in un rapporto ManyToMany al Dipartimento una query potrebbe assomigliare a questo ...
Session session = (Session) getEntityManager().getDelegate();
Criteria crit = session.createCriteria(Student.class)
.createAlias('departments', 'department');
Questa query restituirà i duplicati. Ma impostare il ResultTransformer
come ...
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
Ora i risultati saranno distinti quando Hibernate marshalling i risultati. (O devo dire unmarshalls?)
Se non si desidera Sospensione di restituire la query come un List<Student>
ma preferisce gestire i risultati come List<Object[]>
poi
crit.setResultTransformer(CriteriaSpecification.PROJECTION)
Semplicemente: quando si sta facendo il critera : si desidera che il gruppo di risultati sia in particolare oggetto la si può utilizzare come: es:
.setResultTransformer(Transformers.aliasToBean(Employee.class));
Employee
dovrebbe corrispondere al ResultSet
entità.
Questo ha funzionato perfettamente! – normalUser
Funziona come un fascino. Bel consiglio. Grazie – niarb
Dal doc, posso vedere questo termine per ROOT_ALIAS: l'alias che fa riferimento all'entità "root" della query di criteri. In cosa consiste il termine "radice"? Non sono in grado di capire cosa fa la radice in questo caso. Spiega per favore. – user182944
"root" rappresenta qualsiasi classe utilizzata durante la creazione dell'istanza Criteria. Nel mio esempio la radice è Student. Quindi i risultati verranno restituiti da una chiamata a crit.list() come elenco di oggetti Studente. A meno che non si chieda una ResultTransformation come PROJECTION, nel qual caso sarà un elenco di oggetti Object. (Inoltre, sto modificando il mio esempio originale per rimuovere la restrizione in modo che la query restituisca i duplicati.) – carbontax