提问者:小点点

jdbc无法在同一事务中找到jpa存储库刷新的数据


我有一个用@Transactional注释的JUnit 5测试用例,它首先调用保存服务(使用JPA saveandFlush),并尝试使用查找服务检索相同的数据/实体,该服务使用普通JDBC进行搜索,但它无法找到该实体。

当我尝试使用事务隔离作为read_uncommitted它抛出异常说"java. sql.SQLException:READ_COMMITTED和SERIALIZABLE是唯一有效的事务级别"请注意,我使用的是Oracle数据库。

有没有其他方法可以通过JDBC代码读取同一事务中存在的数据?


共2个答案

匿名用户

Oracle没有实现读取未提交隔离级别,因此您将无法看到来自其他会话的未提交更改。

匿名用户

正如Mark Rotteveel和Marmite Bomber所说,两个不同的事务/连接(JPA和JDBC)无法看到彼此未提交的数据,特别是对于具有Oracle数据库的应用程序。

我必须使用Spring管理的jdbc模板,以便JPA和JDBC模板使用相同的事务并且数据对彼此可见。