2017-02-22 39 views
1

При использовании данных весны и весны jpa в обычном приложении java, как будет jpa знать, когда необходимо передать данные в базу данных?Данные весны jpa фиксируются в обычном приложении java?

Я прошу об этом, потому что репозиторий.save() не фиксирует.

Должен ли я вручную поручить или использовать пружину для этого?

Мой контекст приложения XML:

<context:component-scan base-package="..."> 
    </context:component-scan> 

<jpa:repositories base-package="..." entity-manager-factory-ref="emf" /> 



<bean id="emf" class="...spring.MyEMF"></bean> 

<!-- Add Transaction support --> 
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="emf" /> 
</bean> 

<!-- Use @Transaction annotations for managing transactions --> 
<tx:annotation-driven transaction-manager="transactionManager" /> 

я вручную инициализировать свой контекст с:

new ClassPathXmlApplicationContext("classpath:/data.xml") 
+0

Попробуйте использовать repository.saveAndFlush() – rvit34

ответ

0

Нет весны может обрабатывать транзакции для вас непосредственно перед метод repository.save() добавить @Transactional

@Transactional 
public void save(){ 
    //do something 
} 

и в вашем классе конфигурации убедитесь, что весенняя транзакция Обработка включена

@EnableTransactionManagement 
class myConfig{ 

} 
+0

Хм, я, кажется, я был неправ, за исключением() не совершал. Кажется, что весенние данные jpa crud, такие как save, являются @transactional по умолчанию. Я включил logger org.springframework.orm.jpa.JpaTransactionManager, чтобы увидеть подробности. Мне нужно будет немного научиться. Скоро вернется. –