4

我有一个实体,它对其他实体具有三个外键:

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 不为空的限制。

4

1 回答 1

4

@PrePersist您应该在实体类中编写一个带有注释的方法,该方法将在持续存在之前检查您的限制。

   @PrePersist
   public void checkValidation(){
       if(isValid()){
           // send for persist.
       }
       else{
           //throws Exception.  
       }         
   }

   private boolean isValid(){
        return customer!=null || creditDossier!=null || insuranceDossier!=null;
   }
于 2013-09-25T10:16:07.237 回答