我们实现了Hibernates PreInsertEventListener
和PreUpdateEventListener
来初始化和设置插入和最近更改实体的信息,然后再将其保存到数据库中。包含此信息的字段通过JPA @Column(... , nullable = false)
注释标记为不可为空。
这个设置工作正常,而我们使用Spring IO Platform Athens-RELEASE。现在我们升级到布鲁塞尔-SR2的Spring IO Plat(问题也出现在Spring IO Platfrom Brussels-RELEASE中),我们的应用程序仍然按预期/之前的行为(在调用监听器之后验证实体)。
但是......我们的JUnit测试失败了,因为在测试设置中,Hibernate现在首先验证字段,然后调用监听器。更新实体时这个顺序是正常的(之前已经设置了最后的更改信息),但是在插入实体时会导致org.hibernate.PropertyValueException: not-null property references a null or transient value
- 异常,因为在验证时字段仍为空。 / p>
是否有人观察到同样的行为?关于这里发生了什么以及如何解决这个问题的任何想法/建议?
更多背景资料:
registry.getEventListenerGroup(EventType.PRE_INSERT).appendListener(...)
注册听众,将appendListener(...)
替换为prependListener(...)
并不帮助