2010-03-22 3 views
1

Étant donné les entités JPA annotées, est-il possible de générer (avant l'exécution) la liste des requêtes qui seront effectuées par Hibernate pour les opérations CRUD contre EntityManager)? Pour les requêtes nommées, il est possible d'utiliser org.hibernate.hql.QueryTranslatorComment générer les requêtes SQL qui correspondent aux opérations CRUD de l'entité JPA au moment de la construction avec Hibernate

Tout pointeur sur l'API Hibernate sera apprécié.

Répondre

0

Il est possible via hibernate 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 */ 
} 

Regardez lien suivant afin d'accéder aux méthodes protégées: http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html

Questions connexes