【问题标题】:In @ManyToMany hibernate mapping, mappedby side will not trigger relationship persistence?@ManyToMany hibernate映射中,mappedby端不会触发关系持久化?
【发布时间】:2013-10-31 08:04:52
【问题描述】:

在@ManyToMany 关系中,用“mappedby”注解的一方不会触发关系持久化是真的吗?例如,

@ManyToMany(mappedBy="joinedTopicGroups")
public List<User> getContainedUsers() {
  return containedUsers;
}

@ManyToMany
@JoinTable(name = "UserInTopicGroup", joinColumns = @JoinColumn(name = "userID"), inverseJoinColumns = @JoinColumn(name = "groupID"))
@LazyCollection(LazyCollectionOption.FALSE)
public List<TopicGroup> getJoinedTopicGroups() {
    return joinedTopicGroups;
}

如果我将用户添加到“containedUsers”中,该关系是否会保留到表 UserInTopicGroup 中?

【问题讨论】:

  • 答案是否定的。但是,如果您声明 CASCADE,则可以通过添加到 containedUsers 并更新持有它的实体来持久化未持久化的 User 对象。只有 Ofc 用户表将被更新(如果级联更深入层次结构或子级已经持久化,则与其子级一起更新)

标签: hibernate mapping persistence relationship


【解决方案1】:

为了有一个有效的双向关系,您需要添加对关系两侧的引用:

myGroup.getContainedUsers().add(newUser);
newUser.getJoinedTopicGroups(myGroup);

JPA 不会在对象端强制执行正确的关系映射。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多