在 Hibernate 的 Session
中,我正在加载一些对象,并且由于延迟加载,其中一些对象被加载为代理。这完全没问题,我不想关闭延迟加载。
但是后来我需要通过 RPC 将其中一些对象(实际上是一个对象)发送给 GWT 客户端。而恰好这个具体的对象是一个代理。因此我需要将它转换成真正的对象。我找不到像 Hibernate 中的"materialize"这样的方法。
如何知道对象的类和 ID 将某些对象从代理转换为真实对象呢?
目前我唯一能想到的解决方法是将该对象从 Hibernate 的缓存中移除并重新加载它,但由于许多原因,这真的很糟糕。
Hibernate.initialize(entity)
将从数据库加载该实体的完整对象图。但是,如果只需要具有每个代理设置的 ID 的真实类,则似乎更加复杂。 - djmj(T)Hibernate.unproxy(entity)
。 - panser