`
mamaoyuan625
  • 浏览: 176921 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate中加载的三种类型

阅读更多

一:实体对象的加载

比如说:用户和订单的关系是一对多, 虽然它们有关联,但是默认是延迟加载 Lazy=“true”,最终得到的是代理对象,如果要访问代理对象的属性的话,则会抛出异常,

解决方法:left join fetch 迫切抓取连接

 

select u  from User u left join fetch Order o ;

 

 

二:普通属性

默认是:lazy=“false”

如果要改为延迟 方法较麻烦

 

三:集合对象

set list map  默认 Lazy =“true”

 

1:List

 

<list name="diarys" table="petDiary" cascade="all" inverse="true">
		<key column="petId"></key>
		<index column="listindex"></index>
		<one-to-many class="com.lovo.po.PetDiary"/>
</list>

 2:set

 <set name="orders"
            table="t_order"
            cascade="all"
            inverse="true"
            lazy="true"
           >
           <key column="fk_customer_id"></key>
           <one-to-many class="Order"/>
 </set>

 3:map

private Map school=new  HashMap();      
           
public Map getSchool() {      
    return school;      
}      
public void setSchool(Map school) {      
   this.school=school;      
}  

private Map school=new  HashMap();   
        
public Map getSchool() {   
    return school;   
}   
public void setSchool(Map school) {   
   this.school=school;   
} 



Xml代码 
<map name="school" table="schools">  
      <key column="pid" not-null="true" />        
      <map-key type="string" column="indet"/>      
      <element type="float" column="score"/>      
 </map> 

key 子元素用于映射外键列,而 map-key 子元素则用于映射 Map 集合的 Key 。

分享到:
评论
Global site tag (gtag.js) - Google Analytics