2016-07-07 24 views
8

我想用query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)得到List<Map>。但我有個例外:如何在Hibernate 5.2之後使用`setResultTransformer`?

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

我找不到實施的類org.hibernate.query.Query。方法setResultTransformerorg.hibernate.Query中。

爲什麼org.hibernate.Query不推薦使用?

+0

在版本5.2.3.Final中實現calss在NativeQueryImpl中,但仍舊不推薦使用。此外,似乎還沒有其他選擇,因爲基於https://docs.jboss.org/hibernate/orm/5.2/javadocs/deprecated-list.html – justMe

回答

1

ResultTransformer帶有一個不遵循Functional Interface語法的傳統定義。因此,在這個例子中我們不能使用lambda。 Hibernate 6.0旨在解決這個問題,所以這就是爲什麼Hibernate ORM 5.2 ResultTransformer不推薦使用。然而,另一種會提供,所以我們在本文中討論的概念是要靜置,即使在休眠6 https://vladmihalcea.com/why-you-should-use-the-hibernate-resulttransformer-to-customize-result-set-mappings/

+0

這不是真的,因爲如果我們使用您的語句,hibernate會給出錯誤 – bmtncy

0

不要使用session.createQuery(hql,transformerClass);如果您選擇在您的查詢多個項目,使用舊的代之以已棄用的方法。