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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top