是否可以检查@OneToMany
或@ManyToMany
关联,如果多方具有给定的属性值?
例如,参加讲座的学生:
@Entity
class Lecture implements Serializable {
@Id
Integer id;
@OneToMany
Set<Student> student;
}
@Entity
class Student implements Serializable {
@Id
Integer id;
Boolean isFemale;
}
我可以强制使用“魔术”注释强制只允许女学生参加讲座吗?
答案 0 :(得分:1)
您的@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可以实现。