java - 删除级联不起作用,已经尝试了我找到的所有解决方案
问题描述
Spring Rest API 应用程序。因此,当我删除一个用户时(我还想删除该用户的订单)。用户 ID 是订单的外键(一对多关系)。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@OneToMany(
mappedBy = "order_products",
cascade = CascadeType.ALL,
orphanRemoval = true
)
private List<OrderHasProduct> orders = new ArrayList<>();
用户类
@OneToMany(
mappedBy = "orders",
cascade = CascadeType.ALL,
orphanRemoval = true
)
private List<OrderHasProduct> orders = new ArrayList<>();
public boolean deleteUser(int id){
User usr = usrRepository.findById(id);
if (usr == null) {
throw new ResourceNotFoundException(User.class.getSimpleName());
}
usrRepository.delete(id);
User deletedUser = usrRepository.findById(id);
if (deletedUser != null)
return false;
return true;
}
解决方案
你也可以显示OrderHasProduct
课程吗?这是一个工作示例:
@Entity
public class Post {
@Id
@GeneratedValue
private Long id;
private String title;
@OneToMany(
mappedBy = "post",
cascade = CascadeType.ALL,
orphanRemoval = true
)
private List<PostComment> comments = new ArrayList<>();
//Constructors, getters and setters
}
@Entity
public class PostComment {
@Id
@GeneratedValue
private Long id;
private String review;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
//Constructors, getters and setters
}
}
推荐阅读
- javascript - 删除数组中具有属性的对象会留下一个空对象
- fortran - 英特尔 VTune Profiler 显示 __mulq 是 fortran 代码中计算量大的函数
- axios - chrome 开发工具上的网络选项卡不显示发送到服务器的请求
- amazon-web-services - 如何 Terraform 创建和验证 AWS 证书
- mongodb - MongoDB 更新插入 $in
- python - 当我使用 python 进行 twitter 抓取时,带有某些主题标签的推文要么收集得很慢,要么根本没有收集到我的数据库中
- postgresql - PostgreSQL 数组包含 vs JOIN(性能)
- javascript - HTML 多步骤表单在移动设备上不起作用
- angular - Angular Elements(自定义元素)在 DOM 中不可见
- algorithm - 在有向图中找到有保证的祖先