如果使用Set
,则无法从OneToMany关联中删除子实体。如果我使用List
而不是Set
],一切正常
Post.java
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true) private List<Comment> comments; public void addComment(Comment comment) { if (comments == null) { comments = new ArrayList<>(); } comment.setPost(this); comments.add(comment); } public void removeComment(Comment comment) { if (comments == null || comments.isEmpty()) { return; } comments.remove(comment); comment.setPost(null); }
Comment.java
@ManyToOne(fetch = FetchType.LAZY) @EqualsAndHashCode.Include private Post post;
示例应用代码可在Github上找到
master
分支正在使用Set
,并且测试用例失败list
分支正在使用'List`并且测试用例通过不确定我是否犯错。请提出建议。
如果使用Set,则无法从OneToMany关联中删除子实体。如果我使用List而不是Set Post,则一切正常。java @OneToMany(mappedBy =“ post”,级联= CascadeType.ALL,...
您的测试断言Post.comments
的大小。它也是@Transactional
,表示postRepository.getOne()
返回您在持久性上下文中已经拥有的Post
的完全相同的实例