と、それはのような一般的なSQLクエリを持つことが可能であったRankingModel
がどのように見えるHibernateはネイティブクエリは、Hibernateは< 5.2の下では5.2.10
String sql = "select a, b, sum (c) csum from a group by a, b";
SQLQuery q = session.createSqlQuery (sql);
q
.addScalar ("a", IntegerType.INSTANCE)
.addScalar ("b", IntegerType.INSTANCE)
.addScalar ("csum", IntegerType.INSTANCE);
q.setResultTransformer (new AliasToBeanResultTransformer (RankingModel.class));
List<RankingModel> results = q.list();
:5.2、addScalar()
で、しかし
public class RankingModel
{
public int a, b, csum;
}
、 setResultTransformer()
はすべて廃止されましたが、代わりにsession.createNativeQuery()
を使用するように推奨されています。私は上記に最も近いと同等です:
String sql = "select a, b, sum (c) csum from a group by a, b";
NativeQuery<RankingModel> q = session.createNativeQuery (sql, RankingModel.class);
List<RankingModel> results = q.list();
しかし、このコードはで失敗します。
org.hibernate.MappingException: Unknown entity: ... RankingModel] with root cause
org.hibernate.MappingException: Unknown entity: ... RankingModel
at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
at org.hibernate.engine.spi.SessionFactoryImplementor.getEntityPersister(SessionFactoryImplementor.java:335)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.getSQLLoadable(SQLQueryReturnProcessor.java:358)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.processRootReturn(SQLQueryReturnProcessor.java:411)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.processReturn(SQLQueryReturnProcessor.java:378)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.process(SQLQueryReturnProcessor.java:180)
at org.hibernate.loader.custom.sql.SQLCustomQuery.<init>(SQLCustomQuery.java:71)
at org.hibernate.engine.query.internal.NativeQueryInterpreterStandardImpl.createQueryPlan(NativeQueryInterpreterStandardImpl.java:70)
at org.hibernate.engine.query.spi.QueryPlanCache.getNativeSQLQueryPlan(QueryPlanCache.java:213)
at org.hibernate.internal.AbstractSharedSessionContract.getNativeQueryPlan(AbstractSharedSessionContract.java:550)
at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:992)
at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:148)
誰もが私が欠けているものを任意のアイデアがありますか?
あなたは 'RankingModel.java'を投稿することができますか?そのオブジェクトはインスタンス変数として 'a'、' b'、 'sum'を持たないようです。 – lxcky
javadocには、非推奨の警告の後に、このコメントがあります: '@todo 結果トランスフォーマーへの新しいアプローチを開発する '...現在、定義されている移行パスはないかもしれません。この最も近いコンセプトは 'ResultSetMapping'ですが、私はそれがresultsetトランスフォーマーほどフレキシブルであるとは確信していません。 – Thierry