小编dee*_*kay的帖子

@OnDelete(CASCADE)没有进行双向映射(休眠)

我正在使用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只在单向映射中使用吗?这是一个错误吗?

关心大卫

java hibernate spring-boot

1
推荐指数
1
解决办法
397
查看次数

标签 统计

hibernate ×1

java ×1

spring-boot ×1