java - 插入后检索时为空对象

标签 java hibernate spring-mvc hql

使用 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/

相关文章:

java - Spring Hibernate - 查询以将附加列映射到我的实体 - java.sq.SQLException : Column not found

java - GenericHibernateDAO 的方法 findById 中的 "lock" boolean 值是什么意思?

java - Spring Servlet 从 *.html 映射到 SO 类型映射

java - Java中获取签名验证的证书吊销时间

java - Netty ClosedChannelException 异常

java - 尝试在 Java 中将 List 从数据库转换为 json 时的 Stackoverflow

java - 属性 'passwordEncoder' 在 Spring Security 中抛出异常

java - 使用 Gson 在 Java 中反序列化任意 JSON 并尊重整数

java - 在 PL/SQL 中复制 Java 的 Base64 解码

java - spring mvc 3 - SessionAttributes 似乎不起作用