一尘不染

JPA / Hibernate代理未获取真实对象数据,将所有属性设置为null

hibernate

我正在将Hibernate与JPA一起使用,并且具有如下所示的关系:

public class PencilImpl implements Pencil {

    @ManyToOne(targetEntity = PersonImpl.class, fetch = FetchType.LAZY)
    @JoinColumn(name = "owner", nullable = false)
    private Person owner;

    ...

    @Override
    public final Person getOwner() {
        return owner;
    }
}

自从我开始使用LAZY访 类型以来,每次尝试获取铅笔的所有者( pencil.getOwner
)时,我都会得到一个非null对象,该对象的所有内部属性都设置为null。

我看起来像是由Hibernate创建的代理没有在应该的时候从数据库中获取真实的对象。

有任何想法吗?谢谢 :)


阅读 529

收藏
2020-06-20

共1个答案

一尘不染

正如JB Nizet所建议的那样,我类的getter中的 最终 修饰符与hibernate为延迟加载的关系创建的代理混淆了。

2020-06-20