java - 如何使用 JPA、Hibernate 与同一实体建立关系

标签 java hibernate jpa orm

我正在尝试在不同的人之间创建关系,但找不到如何使用 JPA 来做到这一点的方法。以下是支持该要求的模型:

人员表:
ID 名字 姓氏
1 约翰          海勒
2 约瑟夫      海勒
3 安德鲁      海勒
4 史蒂文      海勒

Person_Relationship表
ID Person1 Person2 关系
1 1             2             父级
2 2             1             子
3 1             3              sibling
4 3             1              sibling
5 4             1             秘书

如果您曾经使用 Hibernate 作为 JPA 提供者实现过上述内容,有人可以分享一下您的经验吗?

最佳答案

最简单的方法是在 Person 实体和 RelationShip 实体之间使用 OneToMany 关联,每个实体映射关联的表:

public class Person {
    @OneToMany(mappedBy = "person1")
    private List<RelationShip> relationships;

    public List<Person> getSiblings() {
        List<Person> result = new ArrayList<Person>();
        for (RelationShip r : relationShips) {
            if (r.getType() == RelationshipType.SIBLING) {
                result.add(r.getPerson2());
            }
        }
    }

    ...
}

关于java - 如何使用 JPA、Hibernate 与同一实体建立关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139930/

相关文章:

java - 调试级别记录语句性能

java - 在 Web View 中加载 jquery 和 SSL

java - Jquery ajax 调用没有命中 servlet

java - 在页面执行后运行的 Struts 2 拦截器?

java - 无法构建 Hibernate SessionFactory 插入更新 false

Java:使用 Hibernate 合并实例与 Oracle CLOB 数据

hibernate - 如何在grails中检索具有唯一空键的行?

java - 使用 Hibernate Envers 加载 ManyToOne 关系 - 急切/懒惰?

java - EntityManagerFactory 关闭,Hibernate

java - 使用 spring 数据 JPA 返回子集/子模式