我有一个具有最后修改属性的实体:
@Temporal(TemporalType.TIMESTAMP)
private Date lastModified;
@PreUpdate
@PrePersist
protected void onUpdate() {
lastModified = new Date();
}
和一个命名的 jpql 更新查询,它为旧实体设置一些属性:
update entity e set ... where e.lastModified < :threshold
然而,即使对于尚未修改的实体也会调用 onUpdate() 方法,即在以下情况下发生事件:
entityManager.createQuery("...").executeUpdate();
返回零作为更新实体的数量。
我可以只更新旧实体而不触及最近的实体吗?更新的实体中不知道阈值参数,因此我无法将更新移动到 onUpdate() 方法中。本机查询可以帮助我吗?