7

ネイティブ クエリの結果クラスとして使用する JPA エンティティがあります。そのため、エンティティ自体は有効ではありません (テーブルがないため)。Hibernate 4.1.x を JPA プロバイダーとして使用します。これは、起動時にスキーマ検証を実行し、その結果失敗します (明示的なテーブルを指定しませんでした)。

org.hibernate.HibernateException: Missing table: MyEntity
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1272)
    [...]

単一のエンティティのみのスキーマ検証を無効にする方法はありますか (JPA または hibernate アノテーションを使用するか、persistence.xml を変更することで)。

編集:結果としてエンティティを使用することを完全に避けることができますが、Hibernate はList<Object[]>クエリ結果として返されます。これは技術的には機能しますが、使用するのは少し醜いです:

Query query = entityManager.get().createNativeQuery("SELECT node, last_update FROM mm_repl_monitoring.my_mm_nodes");
List<Object[]> statuses = query.getResultList();

言い換えれば、非エンティティ クラスにマップするネイティブ クエリでも使用できるマッピング サポートがあればいいのですが。

4

2 に答える 2

0

そのクラスをエンティティとして登録する理由がわかりません。これはカスタム クラスであるため、hibernate/jpa セッションにアタッチしたりデタッチしたりする必要はありません。

于 2012-07-26T12:55:33.793 に答える
0

私にとってうまくいった解決策は、hibernate.hbm2ddl.autoからプロパティを削除することでしたpersistence.xml。もちろん、これにより他のすべてのエンティティのスキーマ検証が無効になりますが、JPA 2.0 では他に何かを見つけることができませんでした。

于 2016-07-11T12:31:21.870 に答える