我有一个实体,它具有指向其他实体的三个外键:

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/

10-10 14:53