请问如果数据库中两个表未作外键关联,在hibernate中,能否使用关联,这样用需要注意什么问题?
请问如果数据库中两个表未作外键关联,在hibernate中,能否使用关联,这样用需要注意什么问题? 问题点数:20、回复次数:7Top
1 楼zhenyang2002(珍阳)回复于 2005-11-18 10:02:32 得分 5
可以,就是注意新的数据会不会跟原有数据产生主键冲突。Top
2 楼chatboycsdn(江湖小虾米)回复于 2005-11-18 10:07:13 得分 5
数据库中有没有外键关系与Hibernate是没有影响的,在我们的项目中通常在设计的时候都为表建立关联,然后通过工具生成Hibernate的pojo和hbm,这时生成的hbm自然会根据数据库一致存在对象关联,而在最后我们为了其它操作的方便,如导入等等。都会将数据库级的关系全部取消,将关联全部放在Hibernate上控制。Top
3 楼GUN_JACK(流浪的骷髅)回复于 2005-11-18 10:58:44 得分 0
再请问一下:
如果一个pojo(Organization)中配置
<set name="deptSet" inverse="true">
<key column="ORG_ID"/>
<one-to-many class="Dept"/>
</set>
另一个pojo(Dept)中是不是必须配置
<many-to-one name="organization" column="ORG_ID" class="Organization" not-null="true" />
能否只配置set这边?Top
4 楼skycncomp(闭关修练到年底)回复于 2005-11-18 11:16:43 得分 3
好像是不可以
没试过Top
5 楼yxhzj(余华[学习J2EE中])回复于 2005-11-18 11:45:22 得分 2
不可以Top
6 楼GUN_JACK(流浪的骷髅)回复于 2005-11-18 13:59:32 得分 0
只设置many-to-one 呢?Top
7 楼zeq258(周二强)回复于 2005-11-18 16:50:37 得分 5
我记得,可以只设置单向的one-to-many呀。
只不过在保存的时候,会比较麻烦,
insert into dep(depid ,.......) values("111",.....);
insert into student(id,depid ,.......)values("张三",null,.....);
update student set depid=111 where id="张三";
-----------------------------
这个例子,dep-to-student 是一个one-to-many的例子。
是单向一对多。
因为在保存的时候,dep的保存根本就没有问题,而student根本就不知道它的depid到底是多少,所以,先插入一条depid为空的记录,然后利用update对其进行更改。
这个时候,数据库student表的depid字段,必须可以为空。或者,在映射文件中,不映射depid这个属性。
《深入浅出Hibernate》书中,对这个问题讲的比较清楚,
我不知道自己说的对不,共同学习·Top





