JPAプロバイダとしてJBossS seamとHibernateを使用しています。私のpersistence.xmlでPersistence.xmlで設定されたプロパティをプログラムで削除する方法
components.xmlで<properties>
<!-- Basic -->
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
<property name="hibernate.ejb.interceptor" value="com.wi.test.audit.ActivityInterceptor"/>
</properties>
が
<persistence:entity-manager-factory name="entityManagerFactory" persistence-unit-name="mydb" />
<persistence:managed-persistence-context name="entityManager" auto-create="true" entity-manager-factory="#{entityManagerFactory}" />
<transaction:entity-transaction entity-manager="#{entityManager}" />
<factory
name="session"
scope="STATELESS"
auto-create="true"
value="#{entityManager.delegate}"
/>
今、私のプログラムでは、私は、プロパティhibernate.ejb.interceptorを除去することにより、設定したインターセプターを削除したいです。
プロパティのマップを取得しようとしましたが、インターセプタのプロパティを削除し、新しいentitymanagerを作成しました。以前はコンフィグレーションされていたインターセプタを使用しています。私はインターセプタあなたはHibernateのバージョンを使用している
Field f = SessionFactoryImpl.class.getDeclaredField("properties");
f.setAccessible(true);
Properties p = (Properties)f.get(session.getSessionFactory());
Map<String, String> map = new HashMap<String, String>((Map) p);
map.remove("hibernate.ejb.interceptor");
localSession =(Session)entityFactory.createEntityManager(map).getDelegate();