首页 > 解决方案 > 带有 @OneToMany 列的 orphanRemobval 错误

问题描述

我目前正在使用 SpringBoot 和 JPA 运行一个小应用程序。我有以下包含所有实体的文件:

@Entity
class User(
    @Id var username: String,
    var password: String,
    @OneToOne(cascade = [CascadeType.ALL]) 
    var basket : ShoppingCart = ShoppingCart()
)

@Entity
class Product(
    @Id var name: String,
    var quantity : Int = 0,
    var price: Double = 0.0
)

@Entity
class CartItem(
    @Id @GeneratedValue var id : UUID? = null,
    @ManyToOne var product : Product,
    var quantity : Int = 0
)

@Entity
class ShoppingCart(
    @Id @GeneratedValue var id : UUID? = null,
    @OneToMany(cascade=[CascadeType.REMOVE], orphanRemoval = true) 
    var cartItems: MutableSet<CartItem> = mutableSetOf()
)

一切正常,但是每当我想删除 CartItem(属于 ShoppingCart)时,我都会遇到外键违规错误。这是因为指向生成的 shopping_cart_cart_items 的 cart_item.id 的外键具有 ON DELETE RESTRICT。我希望这个生成的表有 ON DELETE CASCADE 而不是 ON DELETE RESTRICT。

你知道我的问题在哪里吗?

非常感谢 !

标签: javakotlinspring-data-jpa

解决方案


推荐阅读