2016-12-18 3 views
0

Я использую jpatransactionmanager в данных весны jpa, а провайдер - Hibernate.JpaRepository сохраняет сбрасывает все сущности

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactoryBean" /> 
</bean> 

У меня есть три сущности, которые говорят, Aentity, Bentity. A и B имеют отношение один к одному. Существует третья сущность. Сохранение века не зависит от существа и страсти. Тем не менее, я нашел, когда сохраняется Centity. Aentity и Bentity автоматически сбрасываются на db. Я хочу контролировать это поведение и хочу, чтобы они сохранялись, когда я вызываю save, используя их репозиторий.

Другая информация: Aentity имеет cascase на для B. Transaction Информации для Centity является: Размножение: требуется новым и изоляция = по умолчанию

Я посмотрел на многих форумах, но не смог найти подсказку/решения.

+0

Hibernate держит управляемых объектов в 'Session'. «Сессия» синхронизируется с базой данных через процесс, известный как флеш. Когда «Сессия» сбрасывается, управляется стратегией [промывки] (http://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/FlushMode.html#AUTO) на «сессии». Стратегия по умолчанию - 'AUTO', которая [иногда сбрасывает' Session'] (https://dzone.com/articles/dark-side-hibernate-auto-flush) перед выполнением запроса SELECT. Стратегия промывки [может быть изменена] (http://stackoverflow.com/questions/24778966/jpa-change-default-flushmode-from-auto-to-commit). – manish

ответ

0

Может быть, автокоммит включен, поэтому объекты сбрасываются в базу данных, как только вы вызываете метод сохранения. Попробуйте использовать это.

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> 
<bean id="transactionManager" 
class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
<property name="sessionFactory" ref="sessionFactory" /> 

+0

Объекты, для которых сохранение не было вызвано, также сохраняются. Это беспокойство. Я считаю, что jpatransactionmanager работает над контекстом персистентности, есть ли свойство, в котором я могу настроить этот аспект. Использование HibernateTransactionManager в этом случае не поможет –

Смежные вопросы