【发布时间】:2012-08-23 17:58:03
【问题描述】:
我有一个命名查询,它返回 Collection 的实体。
这些实体上有一个@PreUpdate-annotated 方法。在query.getResultList() 期间调用此方法。因此,实体在持久化上下文中发生了变化,这意味着在事务提交时,实体被写回数据库。
这是为什么? JPA 2.0 规范没有明确提到 @PreUpdate 应该由查询执行调用。
【问题讨论】:
-
我偶然在 EclipseLink 2.3.2.v20111125-r10461 中看到了这种行为,以防它只是该实现中的一个严重错误。
-
我刚刚遇到了同样的问题,但使用的是 Hibernate。所以看起来这不是一个实现问题,而是一个预期的行为。不知何故,这似乎是由于 JTA 引起的一些自动刷新。
标签: jpa