Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate DataSourceTransactionManager未持久化数据_Hibernate_Jpa_Spring Data_Spring Data Jpa - Fatal编程技术网

Hibernate DataSourceTransactionManager未持久化数据

Hibernate DataSourceTransactionManager未持久化数据,hibernate,jpa,spring-data,spring-data-jpa,Hibernate,Jpa,Spring Data,Spring Data Jpa,我正在使用SpringDataJPA在Oracle数据库中插入/更新一些数据。如果我没有明确指定数据源和/或平台事务管理器,那么一切都很好,我能够插入/更新数据。如果我将DataSourceTransactionManager指定为platformTransactionManager,则不会引发异常,但不会将数据插入数据库中 这似乎是一个承诺问题。使用此数据源似乎需要显式提交,但并没有发生,正因为如此,数据从未真正持久化。我已尝试指定spring.datasource.tomcat.defaul

我正在使用SpringDataJPA在Oracle数据库中插入/更新一些数据。如果我没有明确指定
数据源
和/或
平台事务管理器
,那么一切都很好,我能够插入/更新数据。如果我将
DataSourceTransactionManager
指定为
platformTransactionManager
,则不会引发异常,但不会将数据插入数据库中

这似乎是一个承诺问题。使用此数据源似乎需要显式提交,但并没有发生,正因为如此,数据从未真正持久化。我已尝试指定
spring.datasource.tomcat.defaultAutoCommit:true
,但没有帮助

关于如何在完成每项交易后提交的任何想法。我的插入/更新代码如下所示

@Transactional
@Override
public OrderEntity save(OrderResponse order) {
    OrderEntity o = orderRepository.unwrap(order);
    return orderRepository.save(o);
}
事务管理器bean:

@Primary
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}
--

下面是一个演示该问题的示例项目。我在这里使用h2,通过简单地添加
transactionManager
,数据不再被持久化


使用
jpaTransactionManager
解决了这个问题,因为我认为在这种情况下,
dataSourceTransactionManager
与JPA使用的
entityManager
没有关联

我想您确实使用了
@EnableTransactionManagement
,对吧,我已经在一个配置classI中添加了一个示例项目,它显示了即使是H2数据库也存在的问题