使用 JUnit,我尝试测试一些业务逻辑。我的日志中有以下语句:
[EL Fine]: sql: 2015-01-13 19:55:39.369--ClientSession(623375944)--Connection(1559247181)--Thread(Thread[main,5,main])--INSERT INTO SCHEMA.TABLE_NAME (ID_SEQ, ...) VALUES (?, ...) bind => [363, ...]
在同一个测试中,我尝试获取相同的记录,但出现 NullPointerException,以下语句作为最后一个语句:
[EL Fine]: sql: 2015-01-13 19:55:52.976--ServerSession(512108848)--Connection(1285635179)--Thread(Thread[main,5,main])--SELECT ID_SEQ, ... FROM SCHEMA.TABLE_NAME WHERE (ID_SEQ = ?) bind => [363]
此外,当尝试通过父对象检索时,我确实获得了正确的实例,但无法使用 Id_Seq 检索相同的实例。我无法弄清楚这里出了什么问题;任何帮助将不胜感激。 谢谢
最佳答案
找出问题的根本原因,分享以防万一这可以帮助某人:
我的方法用 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
进行注释,它实际上正在启动一个新事务(另一个事务正在并行进行),因此导致空引用。将其更改为 @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
解决了该问题。
谢谢!
关于java - 插入后检索时为空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925212/