hibernate3 一对一映射延迟加载失效

例子:新闻索引A表   内容B表,B在数据库中是CLOB类型。根据主从关系,B中建立了外键。下面A、B也指实体类。

 

hibernate一对一关系映射文件配置就不多写了,大家都知道,直接切入正题:

 

A的映射配置中有lazy="proxy"设置了延迟加载,但是实际执行并不会延迟加载,hibernate会执行一个JOIN或者另外执行一条获取B的SQL。

从数据库设计来说一对一实体关系模型是根据主从关系在从实体关系中加入另一个关系码,这样只会在B表中建立外键。这样的话实际执行的时候会发现hibernate并没有延迟加载B。

 

解决办法是在A的映射文件中one-to-one加上constrained="true",也就是给A加上一个外键并且不要设置fetch="join"。但是这样就出来另一个问题,以上面为例,添加新闻的时候要同时写两个表,并且要先写内容表,为了解决问题我取消了内容表里的外键。

 

 资料来源:http://community.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-one

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值