因为hibernate load出来的时候只是一个proxy,并不是真正的admin,这个proxy只有和admin相同的id属性,而其他属性都是null。
所以如果你在事务外面读取其他属性(除id)都会产生LazyInitializationException(大概吧,记不清了 )。但是,当你在事务里
读取了其他属性,(这里是password)那么,hibernate会足够聪明的把这个proxy转化成真正的admin,所以这时候你得到的是真正的
admin。如果你不想这么麻烦,想要在读取admin时就得到一个真正的实体,那么可以设置lazy = "false", (当然还有其他的办法);
所以如果你在事务外面读取其他属性(除id)都会产生LazyInitializationException(大概吧,记不清了 )。但是,当你在事务里
读取了其他属性,(这里是password)那么,hibernate会足够聪明的把这个proxy转化成真正的admin,所以这时候你得到的是真正的
admin。如果你不想这么麻烦,想要在读取admin时就得到一个真正的实体,那么可以设置lazy = "false", (当然还有其他的办法);
解决方案 »
- 一个service类中用到两个dao类的问题
- 为什么我使用JComboBox控件就会触发GOT_FOCUS事件,该怎么解决
- 怎么用detachedCriteria查询部门名称
- 在jsp页面,点击按钮,出现一个窗口,窗口显示后台信息,并且不能关闭
- 解析XML出现乱码问题!求解!
- JSTL中如何实现LastIndexOf
- 是走还是留?烦请大家给点建议(非技术)
- 使用SSH按中文拼音排序问题
- 请教 :::JSF
- 你有几个main函数?
- 求救:jdk1.3与jdk5.0的区别
- javax.transaction.UserTransaction和net.sf.hibernate.Transaction的区别?
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true" length="50"/>
<property name="summary" not-null="true" length="200" lazy="true"/>
<property name="text" not-null="true" length="2000" lazy="true"/>
</class>
<id name="id">
<generator class="native"/>
</id>
<property name="name" not-null="true" length="50"/>
<property name="summary" not-null="true" length="200" lazy="true"/>
<property name="text" not-null="true" length="2000" lazy="true"/>
</class>
为什么不在<class name="Document" lazy="false">呢?
class
property
subclass
component
等等元素都有跟lazy相关的设置,可以根据自己的选择适当的地方来设置。