站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题一个hibernate一对多问题!来抢分,马上结帖

一个hibernate一对多问题!来抢分,马上结帖

摘要: 一个hibernate一对多问题!来抢分,马上结帖


hibernate3下遇到的一个问题;
有这么几个表:UserInfo(用户信息) ,Store(用户所在专卖店),Service(卖出的东西)
其中,storeid 是UserInfo ,Service,的外键;对应到Store表
userid是Service的外键,对应Userinfo表

问题来了:当我insert 一个Service对象到Service表的时候,由于和UserInfo,Service是多对一关系
必须要为这个Service对象设置一个Store,而且这个store里面的元素还不能为空
同时也要为Service对象设置一个UserInfo
设置Userinfo的时候,也得为其设置一个store...


而实际上,我只需要向service表插入一条记录
这样一来的话,我就要构造一个庞大的Userinfo,Store,然后再设置他们和关联Service
还不能设置Save-Update,不然的话Userinfo,Store,也更新了


表与表的关联如果更复杂的话,是不是就成了一个链条形的无限关联了?

有什么办法能处理?


帮顶~


处理复杂表关系时,hb用起来的确有些吃力,包括查询,比较耗性能


up


象这种情况怎么解决呢?
hibernate宣称的是让用户不必关心底层数据,把心思放在业务逻辑

如果没有办法,我只有把中间的外键给去掉了


如果你要用外键关联的话,无论你是不是用hibernate,你都要保证外键对应的数据是存在的。这是数据库决定的,不是hibernate的错。
简单的办法就是不要使用外键,一切都自己控制。



学习~


但是问题不一样啊,比如说我的外键的storeid是1,直接用sql语句的话
设置service的storeid为1就可以了

hibernate在处理一对多关连的问题的时候,肯定有策略来约束"一"(UserInfo)这一方的.
因为我操作的是"多"(Service)这一方,
"一"(UserInfo)"那一方做为参考,没有必要构造一个完整的对象
而本身hibernate以ID为标识,按道理来说,我把"一"(UserInfo)这一端只需要设置ID就可以了

但是在插入的时候,会去检查"一"(UserInfo)的完整性,自然就报错了,有没有办法去屏蔽不让它检查?


没有人给出解决答案?


把service的inverse设为true也就是把维护关联的工作交给其他类,并且取消out-join


还需要把UserInfo的storid的many-to-one属性save-update去掉吗?


把外建去掉吧


service的inverse设为true?好像不太好吧,这样效率没有service的inverse设为false高.

问一句:没有商店和用户你那卖出的东西哪来得?我觉得逻辑有问题啊


LZ的问题逻辑有点混乱


拿出书来看看,这个还有什么问题么?


我一般是把需要级联操作的表相关连,就是many端有,one端有
另外两个表如果关联不多或纯粹是一个外键的对应关系,那我会把one端的去掉,只留many端.
以上纯属个人想法


↑返回目录
前一篇: 请教上传文件的同时,表单里的参数不在可用的问题
后一篇: 散散分