Java 使用hibernate的Spring事务

Java 使用hibernate的Spring事务,java,spring,oracle,hibernate,transactions,Java,Spring,Oracle,Hibernate,Transactions,因此,对于使用带注释的Spring事务的事务和oracle 11g XE,我有以下问题 事务T1启动,从数据库中读取记录A 事务T2启动,修改记录A,然后提交。 在事务T1中,在T2提交之后,我再次从数据库读取记录A,得到与第一次相同的结果,没有T2提交的更改 我对事务T1使用默认配置,而propagation=propagation.T2需要\u NEW 在二读时,我希望看到T2所做的更改 这可能吗?我错过什么了吗 据我所知,默认隔离是READ_COMMITTED,这应该允许T1读取提交的更改

因此,对于使用带注释的Spring事务的事务和oracle 11g XE,我有以下问题

事务T1启动,从数据库中读取记录A

事务T2启动,修改记录A,然后提交。 在事务T1中,在T2提交之后,我再次从数据库读取记录A,得到与第一次相同的结果,没有T2提交的更改

我对事务T1使用默认配置,而
propagation=propagation.T2需要\u NEW

在二读时,我希望看到T2所做的更改

这可能吗?我错过什么了吗

据我所知,默认隔离是READ_COMMITTED,这应该允许T1读取提交的更改


谢谢你

你说过,T2启动、修改记录并提交。好的,T1是并行执行的,并且在T2提交之前,您得到了与第一次相同的结果吗?好吧,那很正常。如果记录没有被修改(readcommitted),为什么您希望T1会有更新的信息呢?如果它发生在同一个会话中,那么您将得到缓存的版本。因此,您不是从数据库中读取,而是从hibernate一级缓存中读取。您可以使用刷新(实体)从数据库中加载当前状态@WeareBorg T1中的第二次读取在T2提交之后。@M.Deinum T2不应该更新一级缓存吗?