今天在写视频添加的时候,video表一个有五个字段,四个自己的,一个章节的外键,插入的时候只插入四个字段进去,打印输出测试是有外键的值,就是插的时候没有那个值。在网上查资料:、
有如下的一种的解决方法:
留意<set>元素中的inverse属性,该属性表示关联关系由主控(一方)还是受控方(多方)维护。所谓关联关系的维护就是受控方的外键插入由谁来控制。inverse默认为false,表示由主控方来控制。当主控方控制时,插入SQL的语句会分两条进行
insert into Items(itemName, itemPrice, orderId) values('aa', '5.95', NULL);
update Items set orderId = 3 where itemName = 'aa' and itemPrice = '5.95';
因为主控方控制关联关系,意味受控方在插入数据时,不会考虑其外键引用,直接插入为NULL,直到主控方执行更新操作。
”
因为HIbernate分两条SQL语句插入Score对象。
所以在SCORE表中,第一次外键为空。所以定义数据库中外键时默认值应为NULL.
第二次是更新该条记录的外键。
本人在创建SCORE表外键SID默认是不能为空。所以会出现此种情况,更改为NULL一切正常。
如下为HIbernate生成的SQL语句:
部分。
Hibernate:
insert
into
hbql.score
(score, type)
values
(?, ?)
Hibernate:
update
hbql.score
set
sid=?
where
id=?
后来我经过各种测试想知道到底是哪里的问题,结果还是不知道具体是哪里出的问题。。。哎。。悲催啊。。。
有如下的一种的解决方法:
留意<set>元素中的inverse属性,该属性表示关联关系由主控(一方)还是受控方(多方)维护。所谓关联关系的维护就是受控方的外键插入由谁来控制。inverse默认为false,表示由主控方来控制。当主控方控制时,插入SQL的语句会分两条进行
insert into Items(itemName, itemPrice, orderId) values('aa', '5.95', NULL);
update Items set orderId = 3 where itemName = 'aa' and itemPrice = '5.95';
因为主控方控制关联关系,意味受控方在插入数据时,不会考虑其外键引用,直接插入为NULL,直到主控方执行更新操作。
”
因为HIbernate分两条SQL语句插入Score对象。
所以在SCORE表中,第一次外键为空。所以定义数据库中外键时默认值应为NULL.
第二次是更新该条记录的外键。
本人在创建SCORE表外键SID默认是不能为空。所以会出现此种情况,更改为NULL一切正常。
如下为HIbernate生成的SQL语句:
部分。
Hibernate:
insert
into
hbql.score
(score, type)
values
(?, ?)
Hibernate:
update
hbql.score
set
sid=?
where
id=?
后来我经过各种测试想知道到底是哪里的问题,结果还是不知道具体是哪里出的问题。。。哎。。悲催啊。。。