Hibernate Envers avec le ressort en utilisant HiberNatetemplate
-
30-10-2019 - |
Question
J'essaie de configurer des Envers dans un environnement de printemps. Tout fonctionne bien, lorsque je récupére une session manuellement à partir de la SessionFactory et que je mets tout dans une transaction:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
TestEntity test = new TestEntity();
test.setTest("REV1");
session.save(test);
tx.commit();
tx = session.beginTransaction();
test.setTest("REV2");
session.save(test);
tx.commit();
Le code ci-dessus insère des données dans la table de testentité et met également à jour les tables aud- et reviso.
Cependant, lorsque je met à jour le tableau à l'aide de notre DAO, rien n'arrive aux tables spécifiques à Envers. Je soupçonne que la raison pourrait être Utilisation de hibernatetemplate dans le Dao.
HibernateDaoSupport dao;
...
HibernateTemplate hibernateTemplate = dao.getHibernateTemplate();
TestEntity test = new TestEntity();
test.setTest("REV1");
hibernateTemplate.saveOrUpdate(test);
test.setTest("REV2");
hibernateTemplate.saveOrUpdate(test);
Mon printemps-config pour la SessionFactory ressemble à ceci:
<bean id="test-sessionFactory" class=...>
<property name="dataSource" ref="test-dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="eventListeners">
<map>
<entry key="post-insert" value-ref="enversListener" />
<entry key="post-update" value-ref="enversListener" />
<entry key="post-delete" value-ref="enversListener" />
<entry key="pre-collection-update" value-ref="enversListener" />
<entry key="pre-collection-remove" value-ref="enversListener" />
<entry key="post-collection-recreate" value-ref="enversListener" />
</map>
</property>
</bean>
J'ai lu pas mal de forum et de blogs, notamment celui-ci, qui est lié à la FAQ Envers, mais rien n'a mentionné qu'il semble fonctionner dans ma situation.
Est-ce que quelqu'un le sait, s'il est possible de configurer des Envers pour travailler avec Spring en utilisant HiberNateTemplate (au lieu de JPA)? Quelles parties de ma configuration ai-je besoin pour changer? Quelle partie de la documentation / API d'hibernate mérite d'être examinée dans ce contexte (j'ai peur de ne pas encore ne pas être un expert en hibernate)? Quelqu'un pourrait-il fournir un échantillon de code d'une configuration de travail?
J'utilise Spring 3.0.1 et Hibernate 3.5.1.
Pas de solution correcte