Hibernate 一对多注释配置
父亲(一)对儿子(多)
?
Hibernate3刚接触,以前的XML文件也不熟,其他大侠的文章都是先来个多对一,再来个一对多;
我暂时还没配成过多对一,然后再一对多,实在郁闷。
这里只写关于 一对多 的注释配置
希望对拥有同样问题的初学者有帮助(代码能跑起来)。
?
?
最简单的一对多关系,
只需在父亲(一)这一端配置关系,并不需要在(多)端做任何额外的配置。
?
?
这种情况下,查询父亲(一)时可以找出儿子并放到父亲类相应的集合中(本例子的children变量),
但是查询儿子(多)时,并不会找到父亲(稍微思考一下:找到也没有,儿子并没有容纳父亲的变量存在).
?
我使用的是Oracle 10g,生成表的主键是靠Oracle的序列,其他向SQL Server,MySQL有自增属性的,可以参考其他大侠,关于@Id的配置
?
父亲类(一)
declare num number; begin select count(1) into num from user_tables where table_name='TBL_CHILD'; if num>0 then execute immediate 'drop table TBL_CHILD cascade constraints'; end if; end; /create table TBL_CHILD ( Child_ID number(20), childName varchar2(100), fatherID number(20) --不要加not null约束)tablespace BSSGpctfree 10initrans 1maxtrans 255storage(initial 64minextents 1maxextents unlimited );alter table TBL_CHILD add constraints PK_Child_ID primary key(Child_ID)
?不要加not null约束的原因是:
Hibernate的执行语句是:
insert into tbl_Father(Father_ID, fatherName) values(?,?);
insert into tbl_Child(Child_ID,childName,fatherID) values(?,?,?);
...(n条插入儿子的语句)
update tbl_Child set fatherID=? where Child_ID=?
...(n条更新儿子fatherID的语句)
在插入一条记录到tbl_Child的时候,fatherID是空的,
如果你加了非空约束,就等着报错吧!
?
如果不报错,请告诉你是怎么配的,谢谢。(这是我准备研究的下一个问题!)