我有一个实体,它具有指向其他实体的三个外键:
public class MyClass {
// ...
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "customer_id")
public Customer getCustomer() {
return customer;
}
@OneToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "creditDossier_id")
public CreditDossier getCreditDossier() {
return creditDossier;
}
@OneToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "insuranceDossier_id")
public InsuranceDossier getInsuranceDossier() {
return insuranceDossier;
}
// ...
}
我如何添加一个限制来保证至少一个 *Dossier 不为空。
最佳答案
您应该在实体类中编写一个带有注释 @PrePersist
的方法,它会在持久化之前检查您的限制。
@PrePersist
public void checkValidation(){
if(isValid()){
// send for persist.
}
else{
//throws Exception.
}
}
private boolean isValid(){
return customer!=null || creditDossier!=null || insuranceDossier!=null;
}
关于java - Hibernate - 三列中,至少一列必须非空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19002046/