Spring Boot的Spring Data JPA是否支持@ManyToOne的orphanRemoval属性?
问题原因
orphanRemoval 本身就不是@ManyToOne注解支持的属性,这个报错和Spring Data JPA依赖配置无关,属于注解属性误用。
规则说明
orphanRemoval属性仅支持在@OneToMany、@OneToOne注解上声明,它的作用是当父实体与子实体的关联关系断开时,自动删除失去关联的孤儿子实体。
你当前用的是多对一关联,逻辑上也不适合使用orphanRemoval:多个当前实体可能关联同一个MyEntity实例,如果允许在删除单个当前实体时同步删除关联的MyEntity,会导致其他关联了该MyEntity的实体出现外键异常。
解决方案
- 如果你需要删除当前实体时同步删除关联的MyEntity:保留现有配置的
cascade=CascadeType.ALL即可(ALL规则已经包含级联删除的能力),请自行确认业务场景下是否允许级联删除关联的父实体。 - 如果你确实需要orphanRemoval的孤儿删除能力:说明你的关联关系配置方向错误,应该在MyEntity侧配置一对多关联,示例如下:
// MyEntity类内的配置 @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "myEntity") public List<当前实体类> get当前实体集合() { return 当前实体集合; }
内容的提问来源于stack exchange,提问作者user2304483
相关产品推荐
相关产品推荐

