Hibernate中的代理对象和延迟加载的问题

来源:互联网 发布:linux如何安装xampp 编辑:程序博客网 时间:2024/05/18 00:42

Hibernate中的代理对象和延迟加载的问题
概要:
在一个session中,可以通过get方法获得到的是一个代理对象,如果将这个代理对象传出这个session,那么就是一个属性都为null的空对象.

背景:
有两个Hibernate实体类,
waitserviceonline:
customerservice:

其中waitserviceonline的主键是customerservice的关键字,所以waitserviceonline实体类有一个ID,和customerservice类的属性

然后我做了这样的事情:
1.从数据库中获得了waitserviceonline的一个对象

2.获得waitserviceonline对象的ID,即(customerservice的ID)

3.根据ID获得customerservice

结果我发现,这个customerservice对象的属性永远都是null.
经过反复调试,我发现了第一步获得waitserviceonline对象的时候,同时返回了一个customerservice的代理对象,之后我根据ID获得的customerservice对象,其实是之前返回的代理对象,而代理对象的属性为null,所以获取不到customerservice的属性.
之后我又继续测试,获得waitserviceonline对象的时候,同时将它的customerservice属性设为null,发现还是获得的代理对象.
然后我明白这个代理对象在这个session里,只要不提交,我获取到的永远都是这个代理对象,
因此我通过opensession,新开了一个session,之后通过session.get通过ID获得customerservice对象,属性不为null,成功.