首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate 一对多诠释配置

2012-10-23 
Hibernate 一对多注释配置父亲(一)对儿子(多)?Hibernate3刚接触,以前的XML文件也不熟,其他大侠的文章都是

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是空的,

如果你加了非空约束,就等着报错吧!

?

如果不报错,请告诉你是怎么配的,谢谢。(这是我准备研究的下一个问题!)

热点排行