gpt4 book ai didi

java - ManyToMany Relation 正在更新域表

转载 作者:行者123 更新时间:2023-12-01 17:46:28 24 4
gpt4 key购买 nike

所以我有一个以这种方式映射的ManyToMany关系:

@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable( name = "post_category",
joinColumns = @JoinColumn(name = "post_id"),
inverseJoinColumns = @JoinColumn(name = "category_id")
)
private List<CategoryEntity> post_categories;

然后:

    @ManyToMany(mappedBy = "post_categories")
private List<PostEntity> posts;

关系应该是这样的: enter image description here

问题是:我的帖子有类别,这些类别位于静态表中,我不想更改它。我只想更改关系表。当我第一次保存帖子时它可以工作,但是当我尝试更新帖子时,它会修补应该是静态的表:更新方法:

    public Post att(Post model, Integer id) throws ResponseStatusException {
Optional<PostEntity> optionalEntity = repo.findById(id);

if(!optionalEntity.isPresent()) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Post not found");
}

PostEntity entity = optionalEntity.get();
entity.setPost_categories(((model.getPost_categories() != null) ? CategoryMapper.marshall(model.getPost_categories()) : entity.getPost_categories()));
entity.setPost_author((model.getPost_author() != null) ? model.getPost_author() : entity.getPost_author());
entity.setTitle((model.getTitle() != null) ? model.getTitle() : entity.getTitle());

return PostMapper.unmarshall(repo.save(entity));
}

关系好吗?我做错了什么??

项目的github链接在这里,https://github.com/moreiravictor/EspatodeAPI/tree/master/src/main/java/br/com/espatodea/espatodeAPI

最佳答案

经过一番搜索,我发现是cascadeType的问题。因此,为了解决这个问题,您只需更改为 REFRESH:

@ManyToMany(cascade = CascadeType.REFRESH)
@JoinTable( name = "post_category",
joinColumns = @JoinColumn(name = "post_id"),
inverseJoinColumns = @JoinColumn(name = "category_id")
)
private List<CategoryEntity> post_categories;

REFRESHcascadeType 允许您仅对关系的父级进行更改。这样子(类别)就永远不会改变。

关于java - ManyToMany Relation 正在更新域表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60860054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com