gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:30:17 25 4
gpt4 key购买 nike

我有两个实体/表

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

组:

@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<>();

}

组内用户:


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

}

我已引用这些链接1 , 23 。我已经完成了他们所概述的事情

现在,我在 UserInGroup 表中创建了一个条目,但 group 实体仍然没有使用 UserInGroup 中创建的新条目进行更新强>表。

Creating entry in **UserInGroup**

群组未更新

UserInGroups is still empty

在 UserInGroups 中创建的条目 Entry Created in UserInGroups

在群组中创建的条目

Entry created in Groups

<小时/>

编辑:

基于此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 仍然没有创建任何条目。

最佳答案

在您的代码中,在双向关系中,您使用 mappedBy 属性将 Group 实体标记为关系的拥有方。因此,如果您使用 GroupRepository 实例来传播 Group 和 UserInGroup 值,则一切都应该正常进行。也就是说,无需调用在 UserInGroupRepository 实例上保存使用 GroupRepository 实例来保存值,并且应自动创建外键关联。使用 addUserInGroup(userInGroup)removeUserInGroup() 方法向 Group 类中的集合添加或删除值。

groupRepository.save(group);

有关更多信息的相关帖子:Springboot add problem in oneTOMany relation

关于java - OneToMany 列在创建条目时未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62056952/

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