Hibernate ManyToMany映射更新非拥有方

时间:2016-01-02 15:42:28

标签: java hibernate

我的应用程序有两个通过ManyToMany关系User&链接的java pojo类。 Season

@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;
  }

}

Season上课

@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桥表中的条目,一切都很好。但与此同时,我还想更新数据库中季节实体的某些字段,以减少跟随1的用户数量的实例。有没有办法可以在同一个调用中执行此操作?或者我是否必须运行单独的查询来更新季节实体?

1 个答案:

答案 0 :(得分:1)

不确定我是否做到了这一点,但为什么你不能像unfollowedSeason.setCount(unfollowedSeason.getCount() +1 )那样放一些东西然后只更新季节?

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