[英]Hibernate: Allow only entities with given attribut to a OneToMany association
如果多方具有給定的屬性值,是否可以簽入@OneToMany
或@ManyToMany
關聯?
例如,參加講座的學生:
@Entity
class Lecture implements Serializable {
@Id
Integer id;
@OneToMany
Set<Student> student;
}
@Entity
class Student implements Serializable {
@Id
Integer id;
Boolean isFemale;
}
我可以使用“魔術”注解來強制只允許女學生參加講座嗎?
您的@OneToMany批注將執行SELECT語句。 您可能可以使用@Where( https://forum.hibernate.org/viewtopic.php?f=1&t=1026210&view=next )之類的供應商專有注釋來過濾結果。
但是似乎您想限制INSERT的情況。 您可能只使用Java bean驗證器。 所以,如果你的學生類有反向@ManyToOne屬性講座 ,那么你可以創造出拒絕新的學生對象,它鏈接到一個講座,並女一號驗證。 (從而實現您所希望的區分)(請參見bean驗證: https : //docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/validator-customconstraints.html#section-class-level-constraints )
但是您可能已經猜到自己約束不是真正的數據庫約束。 SQL無法實現,因此不要期望JPA能夠實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.