2016-07-07 19 views
8

Voglio usare query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP) per ottenere un List<Map>. Ma ho ricevuto un'eccezione:Come usare `setResultTransformer` dopo Hibernate 5.2?

java.lang.NoSuchMethodError: org.hibernate.query.Query.setResultTransformer(Lorg/hibernate/transform/ResultTransformer;)Lorg/hibernate/Query; 

non riesco a trovare la classe implementata di org.hibernate.query.Query. Il metodo setResultTransformer è in org.hibernate.Query.

E perché org.hibernate.Query è deprecato?

+0

Nella versione 5.2.3.Indice il calss di implementazione è in NativeQueryImpl, ancora deprecato ma. Inoltre non sembra esserci ancora alcuna alternativa basata su https://docs.jboss.org/hibernate/orm/5.2/javadocs/deprecated-list.html – justMe

risposta

1

Il ResultTransformer viene fornito con una definizione legacy che non segue la sintassi dell'interfaccia funzionale. Quindi, non possiamo usare un lambda in questo esempio. Hibernate 6.0 mira a risolvere questo problema, ecco perché Hibernate ORM 5.2 ResultTransformer è deprecato. Tuttavia, sarà fornita un'alternativa, in modo che il concetto di cui stiamo discutendo in questo articolo sta per fermarsi anche in Hibernate 6. https://vladmihalcea.com/why-you-should-use-the-hibernate-resulttransformer-to-customize-result-set-mappings/

+0

questo non è vero, perché l'ibernazione dà errore se usiamo la tua dichiarazione – bmtncy

0

Non usare session.createQuery(hql,transformerClass); se si selezionano più elementi nella vostra ricerca, clicca sul vecchio invece il metodo deprecato.