多对多中间表

发布时间:2012-05-16   来源:文档文库   
字号:
hibernate多对多中间表,一般都是两个外键,例如 用户表(user,主键:userid. 角色表(role,主键:roleid. 中间表字段为两个外键:useridroleid作为联合主键。 但是如果想在中间表加一个字段作为单独的主键,即设置一个字段id作为主键。并且数据库采用的是oracle数据库,主键不能自增。那么采用hibernate向中间表插数据的时候,就会出现问题,即主键id字段插入为空,会报错误。 由于oracle不支持自动编号,为解决以上错误,我们还得为oracle数据库创建一个SEQUENCE(序列语句如 create sequence t_user_role_seq cache 20 increment by 1 start with 100 nomaxvalue; hibernate中的映射文件可这么写
1. 2.
3. t_user_role_seq 4. 5.

小结:
对于oracle数据库:
如果单纯的多对多关系不生成中间表的配置文件那中间表就不要ID主键,只要useridroleid两个外键。
如果中间表设置一个字段id作为主键,那么就需要配置中间表文件,并设置sequence这是因为oracle的主键不会自动增加,需要通过设置sequence来增加。

附录:id生成方式 1,序列sequence 只适用于Oracle
1. 2.
3. person_seq 4. 5.

2,自增列,适用于SQLServerMySql
1. 2. 3.
3,取最大值加一

4,根据底层数据库指定生成方法

name="id" column="id"> d> 使用缺省策略 针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence"hibernate_sequence" 5,高低位算法

high_value next_value 50

以上是hilo算法的普通形式,不适合用于squenece 在一个会话中保存多个对象



本文来源:https://www.2haoxitong.net/k/doc/8f0cde0b6c85ec3a87c2c541.html

《多对多中间表.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式