hibernate - 我在 grails 中遇到完整性违规异常。如何级联删除到grails中的相关实体?

标签 hibernate grails groovy grails-orm

我有一个简单的电子商务 grails 5 应用程序,我在其中将 CartItem 定义为:

class CartItem {
Customer customer
Product product
Integer quantity}

我有产品类别:

class Product {
String name
Double price }

当一个产品被删除时,拥有这个产品的cartItem(如果有的话)也必须被删除。 (这同样适用于客户)。 现在,当我删除产品时,如果此产品有 cartItem,我会收到完整性违规异常。

我正在使用 Hibernate 和 H2 内存数据库。如果不使用 hibernate 配置(除非这是唯一的方法),我如何使用 grails GORM 实现产品删除级联以自动删除关联的 cartItem 删除行为?

当客户将产品添加到购物车时,会创建一个 CartItem 实例。

删除 cartItem 时(从购物车中移除产品时)相关产品或客户不会发生任何变化。但是当一个产品被删除时,其关联的 cartItem 也必须被删除。

最佳答案

CartItem 不属于 Product。因此,Grails 无法在删除 Product 时删除它。但是您可以利用 grails 域类事件 - “beforeDelete”。

https://docs.grails.org/3.0.x/guide/GORM.html#eventsAutoTimestamping

关于hibernate - 我在 grails 中遇到完整性违规异常。如何级联删除到grails中的相关实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72262237/

相关文章:

java - 模式验证 : missing table [hibernate_sequences]

grails - Grails分页设置最高记录

java - 使用 Castor 和 Grails 进行 XML 解码

java - 无法运行共享 Groovy 库函数

mysql - Hibernate 4注解——MySQL配置错误: java. sql.SQLException: Cannot add foreign key constraint

java - Hibernate - OneToMany,每次引用不同的表,无需交叉引用表

grails - 亚马逊 Redshift : query execution hangs

jenkins - 获取流水线中其他作业的参数

java - 有没有办法删除 @OneToMany 关系(使用 JoinTable)中的子实体,而无需获取完整集合?

grails - Grails设置环境变量