问题是这样的 在ORACLE数据库中存在一个多对多的的关系,即LinkManage(链接表),Organ(机构表),中间建有一个中间表LinkOrgan(链接-机构表),中间表不仅持有多方的ID为外键,并且有自己的Id属性(不是联合主键),还有自己的Status(状态)属性,CreatTime(创建时间),UpdateTime(更新时间)之类的属性。
单纯的在多对多方建立关系,在保存时会出现ORA-01400: 无法将 NULL 插入 ("WJJK"."T_LINK_ORGAN"."ID"),即增加中间表时主键为null。
目前解决方案有两种,一种是使用sequence(首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限),然后写触发器。(其他数据库完全可以直接设置为自增长)。
网友的写法是
create sequence bign nocycle maxvalue 9999999999 start with 1;//增加数据
insert into table (ID,..) values(bign.nextval,..)
在hibernate中的映射文件可这么写
<id name="id" type="java.lang.Long" column="ID">
<generator class="sequence" ><