2016-07-07 19 views
8

Chcę użyć query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP), aby uzyskać List<Map>. Ale mam wyjątek:Jak używać `setResultTransformer` po Hibernate 5.2?

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

nie mogę znaleźć realizowanego klasę org.hibernate.query.Query. Metoda setResultTransformer znajduje się w org.hibernate.Query.

A dlaczego atrybut org.hibernate.Query jest przestarzały?

+0

W wersji 5.2.3.Final wykonanie jest w NativeQueryImpl, nadal nieaktualne, ale. Wydaje się, że nie ma jeszcze alternatywy opartej na https://docs.jboss.org/hibernate/orm/5.2/javadocs/deprecated-list.html – justMe

Odpowiedz

1

ResultTransformer ma starszą definicję, która nie jest zgodna ze składnią interfejsu funkcjonalnego. Dlatego w tym przykładzie nie możemy użyć lambda. Hibernate 6.0 ma na celu przezwyciężyć ten problem, dlatego właśnie wynik Hibernate ORM 5.2 ResultTransformer jest przestarzały. Niemniej jednak, alternatywą będzie pod warunkiem, więc pojęcie mówimy w tym artykule ma zamiar stać nawet w Hibernate 6. https://vladmihalcea.com/why-you-should-use-the-hibernate-resulttransformer-to-customize-result-set-mappings/

+0

to nie jest prawda, ponieważ hibernacja daje błąd, jeśli używamy Twojego wyciągu – bmtncy

0

Nie używaj session.createQuery(hql,transformerClass); jeśli wybrać kilka pozycji w zapytaniu użyć starego nieaktualna metoda.