8

JPAの特定の永続ユニットのすべてのEntitiesクラスとそのメタデータを取得する方法があるかどうかを知りたいと思いました。

メタデータとは、フィールドだけでなく、列名、長さ、精度、データ型、テーブル名など、取得できるものすべてを意味します。私はメタモデルを試してみましたが、それはJPQLクエリの場合のみであると思います。

一部のPUのすべてのアクティブなエンティティをユーザーに表示できるようにする必要があります。配列やデータベースにハードコーディングしたくないので、APIにエンティティの内容を教えてもらいたいです。また、可能であれば、すべてのエンティティのマネージドインスタンスを取得します。

リフレクションを使用して@Entityアノテーションを持つすべてのクラスを取得することはできると思いますが、それはきれいではなく、特定のPUに属するクラスを知るのが難しいため、APIがすでにこの情報を公開している場合は次のようになります。素晴らしい。

私はJPA準拠のソリューションを好みますが、不可能な場合は、HibernateまたはEclipseLink固有の回答で対応できます。

ありがとう!

4

2 に答える 2

11

はい、からすべてのエンティティとエンティティに関する対応するメタデータ情報を取得できますEntityManager

EntityManager.getMetamodel()エンティティの属性にアクセスして取得Metamodelできるインターフェイスにアクセスできます。EntityTypeManagedType

于 2012-08-14T10:49:47.290 に答える
2

エンティティは、定義されている場合、永続性ユニットから独立しています。それらは、persistence.xmlの定義で永続性ユニットに関連付けられています。特定の永続ユニットのエンティティマネージャーを管理するEntityManagerFactoryには、管理するエンティティのリストを取得するためのAPIがないようです。EntityManagerFactoryの対応物であるHibernateのSessionFactoryには、クラスメタデータを取得するためのAPIがあります(http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html)。

于 2012-08-14T03:36:48.330 に答える