Hibernate删除代理数据

时间:2009-08-19 12:45:41

标签: hibernate

我正在使用一个使用hibernate的应用程序。当对象从休眠状态返回时,它不再是一个pojo ..有一些类似cglibenhancer附加到它。因为它我不能对它做任何操作。我需要再次将它转换为java poja。为此,我正在使用hibernatebeanreplicator。它的作用是,如果类附加了cglibenhancer ..它使对象为null。问题来自于我只获取该对象的一个​​或两个属性并且我想使用它们,但是因为该类附加了cglibenhancer,它使它为null ..我想只有那些未获取的属性应该是mae null。让我通过一个例子让场景更加清晰。

我有一个用户类

class User {
    long id;
    String name;
    Address address;
}

我有另一个班级地址

class Address {
    long addrId;
    String streetName;
    String city;
}

在我的用户类maping中,我将addrId存储为外键。 现在我只想获取用户类数据+地址ID。 但是因为我没有完全加载地址类并且它附加了cglibenhancer而我的beanreplicator使它为null。

有没有办法获取用户类数据+地址ID并使streetName和city为空。

提前致谢,

Rima Desai

1 个答案:

答案 0 :(得分:0)

我认为你不能做你想做的事,虽然我不明白你为什么会这么想。

如果您获取Person的{​​{1}},并且由于某种原因Hibernate决定Address应该是CGLIB代理,您可以获取Address'ID没有它会打到数据库。但当然,如果您尝试获取街道或城市,则必须转到数据库以获取该数据。