Java Postgresql提交的数据不可见

Java Postgresql提交的数据不可见,java,postgresql,jdbc,Java,Postgresql,Jdbc,我注意到我的申请中有奇怪的行为。提交后,提交的数据似乎不可见。算法如下所示: connection1 - insert into table row with id = 5 connection1 - commit, close connection2 - open connection2 - select from table row with id = 5 (no results) connection2 - insert into table row with id = 5 (PRIMAR

我注意到我的申请中有奇怪的行为。提交后,提交的数据似乎不可见。算法如下所示:

connection1 - insert into table row with id = 5
connection1 - commit, close
connection2 - open
connection2 - select from table row with id = 5 (no results)
connection2 - insert into table row with id = 5 (PRIMARY KEY VIOLATION, result is in db)
如果select on connection2未返回任何结果,则我执行insert,否则为update。
服务器有许多数据库(~200),看起来提交已经完成,但更改将在以后的数据库中进行。我使用java和jdbc。任何想法都将不胜感激。

此行为对应于可重复读取隔离模式,请参阅:

可重复读取
当前事务的所有语句只能看到在 第一个查询或数据修改语句 在该事务中执行


请尝试
connection.setTransactionIsolation(connection.TRANSACTION\u READ\u COMMITTED)
以查看它是否起作用。

如果connection2的当前事务是在connection1的事务提交之前启动的,在connection1提交后,它将无法看到更改Connection2被打开。它是否真的是一个新的新连接,或者您是否正在使用连接池,如果是这样,在逻辑连接上执行
close()
操作后,连接池在重置/清理方面可能会出现错误。这是一个新连接,我没有使用连接池,你解决了吗?我也有同样的问题。打开一个连接,插入一些数据,提交,关闭。然后打开另一个连接,但插入的数据不可见。然后关闭并打开另一个连接。。。。。一段时间后(大约1分钟),我可以看到插入的数据。我已提交事务处理。当我尝试使用psql时,也会出现同样的问题。我的所有连接都具有事务\u读取\u提交隔离。