Как генерировать запросы SQL, которые соответствуют операциям CRUD JPA Entity во время сборки, с помощью Hibernate - PullRequest
1 голос
/ 22 марта 2010

С учетом сущностей, аннотированных JPA, возможно ли сгенерировать (т.е. до времени выполнения) список запросов, которые будут выполнены Hibernate для операций CRUD (выполняемых с EntityManager)? Для именованных запросов это возможно с помощью org.hibernate.hql.QueryTranslator

Будет приветствоваться любой указатель на Hibernate API.

1 Ответ

0 голосов
/ 08 апреля 2010

Возможно через 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 */
}

Посмотрите на следующую ссылку для доступа к защищенным методам: http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html

...