我有两个实体/表

为了简洁起见,删除了一些列

组:

@Entity
@Table(name = "groups", indexes = {@Index(name = "groups_index", columnList = "id", unique = true)})
public class Group implements Serializable {

    @OneToMany(targetEntity = UserInGroup.class, mappedBy = "group")
    private Set<UserInGroup> userInGroups = new HashSet<>();

}


UserInGroup:


@Entity
@Table(name = "user_in_group", indexes = {@Index(name = "user_in_group_index", columnList = "group_id,user_id", unique = true)})
public class UserInGroup implements Serializable {

    @ManyToOne
    @JoinColumn(name = "group_id", referencedColumnName = "id")
    private Group group;

}


我已经提到了这些链接123
我做了他们概述的事情

现在,我在UserInGroup表中创建了一个条目,但是仍然没有使用在UserInGroup表中创建的新条目来更新组实体。

java - OneToMany列在创建条目时不更新-LMLPHP

组未更新

java - OneToMany列在创建条目时不更新-LMLPHP

在UserInGroups中创建的条目
java - OneToMany列在创建条目时不更新-LMLPHP

在组中创建的条目

java - OneToMany列在创建条目时不更新-LMLPHP



编辑:

基于此answer,我添加了以下内容

UserInGroup userInGroup = new UserInGroup().setGroup(group).setUser(creatorUser).setGroupRoleEnum(GroupRoleEnum.ADMIN);
group.addUserInGroup(userInGroup);
groupRepository.save(group);


public void addUserInGroup(UserInGroup userInGroup) {
    if (userInGroups == null) {
        userInGroups = new ArrayList<>();
    }
    userInGroups.add(userInGroup);
    userInGroup.setGroup(this);
}


但是表UserInGroup仍未创建任何条目。

最佳答案

在代码中,在双向关系中,您使用Group属性将mappedBy实体标记为关系的拥有方。因此,如果您使用GroupRepository实例传播GroupUserInGroup值,则所有内容都可以正常使用,即不要调用UserInGroupRepository实例上的save使用GroupRepository实例来保存值和外键关联应自动创建。使用addUserInGroup(userInGroup)removeUserInGroup()方法向Group类中的集合添加或删除值。

groupRepository.save(group);


有关更多信息的相关文章:Springboot add problem in oneTOMany relation

07-28 01:53