论坛首页 入门技术论坛

one-to-one延迟加载问题

浏览 1953 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-03-26  

宿主表配置:
<class name="BaseInfo"  table="BaseInfo"  lazy="true">
        <id name="Id" type="java.lang.Long">
            <column name="ID" precision="30" scale="0" />
            <generator class="native"></generator>
        </id>
.....
<one-to-one name="Address" class="cn.com.ctsi.xapc.model.DeputyAddress" constrained="true" fetch="select" lazy="proxy"/>


从表配置:
<class name="Extension" table="Extension"  lazy="true">
<id name="Id" type="java.lang.Long">
<column name="ID" precision="30" scale="0" />
<generator class="foreign">
<param name="property">BaseInfo</param>
</generator>
</id>
<one-to-one name="BaseInfo"
class="BaseInfo" constrained="true" />
...



在检索中, 使用session.createQuery("from BaseInfo") 的方式检索,没有出现N+1查询。 但是当取得一个宿主对象后,通过它获得其从属属性时,宣告失败,  即,无法这样获得:baseInfo.getExtension() 一个从表属性。

请问如何获得才能通过baseInfo实例获得 Extension实例?
   发表时间:2008-03-26  
你没有为类BaseInfo配置Extension属性,它怎么可能会加载该属性呢?
0 请登录后投票
   发表时间:2008-03-27  
配置了属性。
谢谢楼上, 不过问题已经解决。

关键问题是web.xml需要设置这样过滤:

<filter> 
    <filter-name>OpenSessionInViewFilter</filter-name> 
     <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
   </filter> 
   <filter-mapping> 
    <filter-name>OpenSessionInViewFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
   </filter-mapping>
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics