Hibernate:如何以编程方式在实体加载上恢复(双向)父关系?

时间:2013-10-01 15:52:25

标签: hibernate jpa bidirectional

通过从Parent对象调用getChild()来加载子对象(参见下面的示例)。此时hibernate知道父/子关系。如何使用此信息以编程方式恢复双向关系(比如在子级中设置父级字段)?

@Entity
public class Parent {

    @Id
    private String id;

    @OneToOne(fetch=FetchType.LAZY)
    private Child child;

    public Child getChild(){
        return child;
    }
}

@Entity
public class Child {

    @Id
    private String id;

    @Transient
    private Object parent;

    public Object getParent(){
        return parent;
    }
}

动机:可以从不同的类引用子,但在运行时只允许一个父对象。使用“mappedby”将导致Child类中的多个“反向”字段。这不是所希望的,因为在运行时只能存在一个父对象。父对象的类型对于用例并不重要。

1 个答案:

答案 0 :(得分:0)

使用@OneToOne中的mappedBy属性 设置属性mappedBy =“class ref”;

 @OneToOne(mappedBy = "parent", fetch=FetchType.LAZY)
 private Child child;