1

JPA アノテーション付きエンティティが与えられた場合、CRUD 操作 (EntityManager に対して実行される) のために Hibernate によって実行されるクエリのリストを (実行前に) 生成することは可能ですか? 名前付きクエリの場合、org.hibernate.hql.QueryTranslator を使用して可能です

Hibernate API へのポインターは高く評価されます。

4

1 に答える 1

0

休止状態の ClassMetadata を介して可能です。

Session session = (Session) entityManager.getDelegate();
SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(pEntityClass.getName());
if (hibernateMetadata instanceof AbstractEntityPersister) {
   /*...look at protected methods that return SQL Strings for the entity getSQLIdentityInsertString,getSQLLazySelectString,getSQLSnapshotSelectString,getSQLUpdateByRowIdStrings,getSQLLazyUpdateByRowIdStrings,getSQLDeleteStrings,getSQLInsertStrings,getSQLUpdateStrings,getSQLLazyUpdateStrings */
}

保護されたメソッドにアクセスするには、次のリンクを参照してください: http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html

于 2010-04-08T12:43:57.370 に答える