java - Hibernate:仅允许具有给定属性的实体进行 OneToMany 关联

标签 java hibernate validation

如果多方具有给定的属性值,是否可以 checkin @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 validator 。因此,如果您的 Student 类具有反向 @ManyToOne 属性 lecture,那么您可以创建一个 validator 来拒绝新的学生对象,这些对象链接到讲座并且是女性。 (从而实现你想要的歧视)(参见bean验证:https://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html/validator-customconstraints.html#section-class-level-constraints)

但是您可能已经猜到您的约束不是真正的数据库约束。这对于 SQL 是不可能的,所以不要指望它可以通过 JPA 实现。

关于java - Hibernate:仅允许具有给定属性的实体进行 OneToMany 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301632/

相关文章:

java - 计算选择排序、插入排序、合并排序和快速排序中的比较次数?

java - Hibernate中断异常

hibernate - 如何在hibernate查询语言中使用Date函数

java - 如何格式化类中的方法

java - Java 在文件中间写入的最佳方式

java - -Xmx 是否停止自动 GC 直到消耗最大内存?

java - 如何使用 hibernate 将文件存储在postgres数据库中?

javascript - jQuery/Javascript - 多重正则表达式验证

Java : do While loop, 同时接受所有有效输入,应该只有一个

python - optparse() : Input validation