java - Hibernate ManyToMany 映射更新非拥有方

标签 java hibernate

我的应用程序有 2 个通过 ManyToMany 关系链接的 java pojo 类 UserSeason:

@Entity
@Table(name = "user")
public class User implements Serializable {

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = "user_season", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "season_id") })
    private Set<Season> followingSeason;

  Set<Season> getSeasonsWhichTheUserFollows(){
    return this.followingSeason;
  }

}

季节

@Entity
@Table(name = "season")
public class Season implements Serializable{

@ManyToMany(mappedBy = "followingSeason", fetch = FetchType.EAGER)
    private Set<User> user;

}

当用户取消关注某个季节 unfollowedSeason 对象时,我将其从用户关注的季节集中删除。

Set<Season> seasonSet = user.getSeasonsWhichTheUserFollows();
seasonSet.remove(unfollowedSeason);
user.setFollowingSeason(seasonSet );
this.userService.update(user);

这会从 user_season 桥接表中删除该条目,一切都很好。但同时我也想更新数据库中 Season 实体的一些字段,以将用户数减 1。有没有办法在同一个调用中做到这一点?或者我是否必须运行单独的查询来更新季节实体?

最佳答案

不确定我是否正确,但为什么你不能直接在其中添加一些内容,例如 unfollowedSeason.setCount(unfollowedSeason.getCount() +1 ) 然后更新季节?

在评论中讨论后进行编辑: 你想做的事是不可能的,因为 你不能在同一个 SQL 语句中执行更新和删除(如 over9k 所述)

关于java - Hibernate ManyToMany 映射更新非拥有方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567632/

相关文章:

java - springboot应用程序编译错误

java - MongoDB 由 : java. sql.SQLException 引起:第 1 行的列 'scenario_order' 的数据太长

java - 让 Hibernate 在完成实体实例后释放它们?

java - 如何获取可观察对象的值?

java - 在二维数组中查找峰值的算法

java - Hibernate session.flush() 即使设置了自动提交

java - where子句中的hql问题

java - JPA - 从 OneToMany 关系中删除一个 child

C++ 中的 Java 反序列化

java - 我可以使用 UrlEncodedFormEntity 为多个部分上传图像和文本吗?