我使用HQL从hibernate检索了一个数据库代理对象empP(domain class:Employee)
。现在我想将它(步骤1)序列化为某个文件然后反序列化(步骤2)。 Step1和Step2分为2个不同的线程。
顺序问题:
empP
序列化((ProxyObject)empP).getHandler().session
的附加会话,session
为transient
。empP
反序列化为empPDeserialized
,现在有empP但empP.getHandler().getSession()
等于null
。这是第二步,有不同的会话。现在,每当我从getter
致电empPDeserialized
时,就会抛出could not initialize proxy - no Session
。
在第2步中,我希望empPDeserialized
附加到当前会话,以便getter调用成功。
现在,我能想到的一个愚蠢的方法是:
((org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer)((javassist.util.proxy.ProxyObject)empPDeserialized).getHandler())
.setSession((org.hibernate.engine.spi.SessionImplementor)sessionFactory.getCurrentSession());
问题是,我想知道最好的做法,并在步骤2中使用最少的SQL调用。提前谢谢。