我有GenericEntity
类@PrePersist
方法onCreate()
它设置时间戳就在将实体保存到数据库之前。它运行良好,但是当我尝试测试我的DAO类时,我遇到了问题。 @PrePersist
在保存实体时明确设置created
字段值。如何在测试环境中使@PrePersist可选,以便我可以明确设置created
字段值?JPA @PrePersist在测试环境中
@MappedSuperclass
public abstract class GenericEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created", nullable = false)
private Date created;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@PrePersist
protected void onCreate() {
created = new Date();
}
/*
* Used for tests
*/
public void setCreated(Date created) {
this.created = created;
}
public Date getCreated() {
return created;
}
}
用户EntityListeners为您的回调拦截: https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en /html/listeners.html – fangdi
我在persistence.xml中有2个持久单元。如何配置它们以对GenericEntity类使用不同的EntityListeners? – Justas