簡體   English   中英

休眠:僅允許具有OneToMany關聯的實體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM