如何在 JPA 2.1中调用由@PreUpdate
(包括@PrePersist
和其他)注释的方法?@PreRemove
以以下CriteriaUpdate
查询为例:
Brand brand=//... Populated by client. The client is JSF in this case.
byte[] bytes=//... Populated by client. The client is JSF in this case.
CriteriaBuilder criteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaUpdate<Brand>criteriaUpdate=criteriaBuilder.createCriteriaUpdate(Brand.class);
Root<Brand> root = criteriaUpdate.from(entityManager.getMetamodel().entity(Brand.class));
criteriaUpdate.set(root.get(Brand_.brandName), brand.getBrandName());
criteriaUpdate.set(root.get(Brand_.category), brand.getCategory());
criteriaUpdate.set(root.get(Brand_.brandImage), bytes);
criteriaUpdate.where(criteriaBuilder.equal(root, brand));
entityManager.createQuery(criteriaUpdate).executeUpdate();
@PreUpdate
给定关联实体中修饰的方法- Brand
。
@Column(name = "last_modified")
@Temporal(TemporalType.TIMESTAMP)
private Date lastModified; //Getter and setter.
@PreUpdate
public void onUpdate() {
lastModified = new Date();
System.out.println("lastModified = "+lastModified);
}
仅在使用更新行时调用此方法
entityManager.merge(brand);
当相关操作涉及标准 API 时,如何调用由@PreUpdate
(or @PrePersist
, ) 修饰的方法?@PreRemove
CriteraUpdate