一:Hibernate实体对象的加载
比如说:用户和订单的关系是一对多,虽然它们有关联,但是默认是延迟加载Lazy=“true”,最终得到的是代理对象,如果要访问代理对象的属性的话,则会抛出异常,
解决方法:leftjoinfetch迫切抓取连接
selectufromUseruleftjoinfetchOrdero;
二:Hibernate普通属性
默认是:lazy=“false”
如果要改为延迟方法较麻烦
三:Hibernate集合对象
setlistmap默认Lazy=“true”
1:List
- Java代码
- <listnamelistname="diarys"table="petDiary"cascade="all"inverse="true">
- <keycolumnkeycolumn="petId"></key>
- <indexcolumnindexcolumn="listindex"></index>
- <one-to-manyclassone-to-manyclass="com.lovo.po.PetDiary"/>
- </list>
- <listnamelistname="diarys"table="petDiary"cascade="all"inverse="true">
- <keycolumnkeycolumn="petId"></key>
- <indexcolumnindexcolumn="listindex"></index>
- <one-to-manyclassone-to-manyclass="com.lovo.po.PetDiary"/>
- </list>
2:set
- Java代码
- <setnamesetname="orders"
- table="t_order"
- cascade="all"
- inverse="true"
- lazy="true"
- >
- <keycolumnkeycolumn="fk_customer_id"></key>
- <one-to-manyclassone-to-manyclass="Order"/>
- </set>
- <setnamesetname="orders"
- table="t_order"
- cascade="all"
- inverse="true"
- lazy="true"
- >
- <keycolumnkeycolumn="fk_customer_id"></key>
- <one-to-manyclassone-to-manyclass="Order"/>
- </set>
3:map
- Java代码
- privateMapschool=newHashMap();
- publicMapgetSchool(){
- returnschool;
- }
- publicvoidsetSchool(Mapschool){
- this.school=school;
- }
- privateMapschool=newHashMap();
- publicMapgetSchool(){
- returnschool;
- }
- publicvoidsetSchool(Mapschool){
- this.school=school;
- }
- Xml代码
- <mapnamemapname="school"table="schools">
- <keycolumnkeycolumn="pid"not-null="true"/>
- <map-keytypemap-keytype="string"column="indet"/>
- <elementtypeelementtype="float"column="score"/>
- </map>
- privateMapschool=newHashMap();
- publicMapgetSchool(){
- returnschool;
- }
- publicvoidsetSchool(Mapschool){
- this.school=school;
- }
- privateMapschool=newHashMap();
- publicMapgetSchool(){
- returnschool;
- }
- publicvoidsetSchool(Mapschool){
- this.school=school;
- }
- Xml代码
- <mapnamemapname="school"table="schools">
- <keycolumnkeycolumn="pid"not-null="true"/>
- <map-keytypemap-keytype="string"column="indet"/>
- <elementtypeelementtype="float"column="score"/>
- </map>
key子元素用于映射外键列,而map-key子元素则用于映射Map集合的Key。
【编辑推荐】