Jpa OneToMany 有条件

oak*_*oak 7 jpa jpa-2.0 spring-data-jpa

我有 2 张桌子:

第一个是“人”:

  • 人物 ID,
  • 人名

第二个是“PersonsGraphs”:

  • person_id1,
  • 人_id2,
  • 关系类型

我正在寻找一种建立“家谱”的方法。

我的第一个选择是:将 personGraphs 加载到哈希表中,然后递归地构建树。

我想出的第二个选择:使用@OneToMany jpa-relation。这可以工作,但有时我有一些relation_types我想要/不想包含的内容。是否有任何选项允许我@OneToMany在使用时对关系设置一些条件@JoinTable?

谢谢!橡木

Cep*_*pr0 7

尝试使用Hibernate@Where 注解,例如:

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Integer id;

    private String name;

    @Enumerated(EnumType.STRING)
    private Gender gender;

    @ManyToOne
    private Person parent;

    @Where(clause = "gender = 'MALE'")
    @OneToMany(mappedBy = "person")
    private List<Person> sons;

    @Where(clause = "gender = 'FEMALE'")
    @OneToMany(mappedBy = "person")
    private List<Person> daughters;
}

public enum Gender {
   MALE, FEMALE
}
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 1

我建议创建一个关系类来对连接表进行建模。

人 - 一对多 - 关系 - 关系 - 多对一源 - 多对一目标

在 EclipseLink 中,您可以向任何关系映射添加表达式条件,

http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria