延迟加载关联未正确初始化子关联

时间:2012-11-30 13:16:55

标签: java hibernate jpa hibernate-mapping

我有以下实体:

@Entity
public class Foo {
    @ManyToOne(optional = false) // I've tried @OneToOne also, same result
    @JoinColumn(name = "bar_id")
    private Bar bar;

    // this is a business key, though not mapped as unique for legacy reasons
    @Column(nullable = false)
    private long fooNo; 

    // getters/setters + other properties
}

@Entity
public class Bar {
    @OneToOne(optional = true, mappedBy = "bar", cascade = CascadeType.ALL)
    private Foo foo;

    // getters/setters + other properties
}

注意:这是正确的映射:@ManyToOne和@OneToOne(它不是由我设计的)。我也试过了双方的@OneToOne,结果相同。

基本上,我可以拥有一个没有Foo对象的Bar,但每次我有一个Foo时,都必须有一个与之关联的Bar。 Foo被认为是父对象(这就是为什么它是协会的所有者),但Bar在某些情况下可以独立。

然后我加载Foo这样的对象:

SELECT f FROM Foo f WHERE f.fooNo = :fooNo
正如预期的那样,

foo.getBar()正确提取相应的Bar。但是,foo.getBar().getFoo()null。似乎这种关系的另一面没有被JPA / hibernate正确初始化。任何想法为什么会发生这种情况以及我如何解决它?

我使用Hibernate 3.2.1作为我的JPA实现,我们通过EJB3 bean使用它(虽然这可能无关紧要)。

1 个答案:

答案 0 :(得分:0)

你确定你的同情吗? ManyToOne通常暗示oneToMany on other。