我正在使用Spring Boot和hibernate 5.0.11.Final
我有以下奇怪的问题.如果我像这样定义双向映射
@Data
@Entity
public class Device {
@OneToMany(mappedBy = "device")
private Collection<Container> containers = new ArrayList<>();
}
@Data
@Entity
public class Container {
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
private Device device;
}
Run Code Online (Sandbox Code Playgroud)
无法创建容器表上的外键约束ON DELETE CASCADE,因此删除设备不会删除其容器.
如果我使映射单向,但是如此
@Data
@Entity
public class Device {
}
@Data
@Entity
public class Container {
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
private Device device;
}
Run Code Online (Sandbox Code Playgroud)
使用ON DELETE CASCADEset 按预期生成约束.
如果我在设备端设置级联@Cascade(CascadeType.DELETE)并删除@OnDelete级联工作但在休眠侧没有数据库中的物理约束.
难道我做错了什么?我应该@OnDelete只在单向映射中使用吗?这是一个错误吗?
关心大卫