JPA @PreUpdate使用entityManager.createNativeQuery()进行更新查询

时间:2017-07-12 02:21:59

标签: hibernate jpa-2.0 hibernate-mapping

我有以下基础实体类,它由2个JPA实体类扩展。

@MappedSuperclass
public class BaseEntity implements Serializable {
     ...
     ...

     @PrePersist
     protected void onCreate() {
         this.modifiedOn = new Date();
     }

     @PreUpdate
     protected void onUpdate() {
        this.modifiedOn = new Date();
     }
}

现在,如果我使用实体管理器使用以下本机查询调用更新几列。它会调用@PreUpdate吗?

Query query = super.getEntityManager(Constant.PSUNIT).createNativeQuery("UPDATE CUSTOMER SET TYPE = 'XYZ' WHERE SOURCE = 'ABC'");
query.executeUpdate();



@Entity
@Table(name = "CUSTOMER")
public class Customer extends CustomerSuper {
// customer related fields. and getting setter with annotations.
 ...
 ... 
 ...
}


@MappedSuperclass
public class CustomerSuper extends BaseEntity implements Serializable {

1 个答案:

答案 0 :(得分:0)

如果我们使用实体管理器为本机查询触发更新,看起来它不会调用preUpdate。

可能背后的原因是创建查询的工作由我们的代码而不是hibernate管理。