我在互联网上查了很多帖子,但都没有解决我的问题.如果有人能提供帮助,真的很感激!我有OneToMany父子关系.当其中一个子组合键是父组件(Level1)的外键时,Hibernate不会级联插入子级(Level2).我指定了cascade ="all",无论逆是true还是false,结果都是一样的.没有例外,它只是不插入.下面的打印显示Level1已成功插入,但Level2仅被选中,没有插入.
Hibernate:插入sst.level_1(STATUS,NAME)值(?,?)Hibernate:从sst.level_2 level2x_中选择level2x_.LEVEL_1_ID,level2x_.TIMESEGMENT,level2x_.CATEGORY为CATEGORY4_,其中level2x_.LEVEL_1_ID =?和level2x_.TIMESEGMENT =?
API是Hibernate 4.1.6/Spring 3.1.2.
这是mySQL的表定义:
Hibernate: insert into sst.level_1 (STATUS, NAME) values (?, ?)
Hibernate: select level2x_.LEVEL_1_ID, level2x_.TIMESEGMENT, level2x_.CATEGORY as CATEGORY4_ from sst.level_2 level2x_ where level2x_.LEVEL_1_ID=? and level2x_.TIMESEGMENT=?
Run Code Online (Sandbox Code Playgroud)
这是测试代码.
CREATE TABLE level_1
(
ID int NOT NULL PRIMARY KEY AUTO_INCREMENT,
STATUS int,
NAME varchar(255)
);
CREATE TABLE level_2
(
LEVEL_1_ID int,
TIMESEGMENT int,
CATEGORY varchar(2),
PRIMARY KEY (LEVEL_1_ID, TIMESEGMENT),
FOREIGN KEY (LEVEL_1_ID) REFERENCES level_1(ID) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
Level1的映射:
public class Test {
public static …Run Code Online (Sandbox Code Playgroud)