插入一张多对多表并加入表休眠
Posted
技术标签:
【中文标题】插入一张多对多表并加入表休眠【英文标题】:Insert into one table of ManytoMany and joining table hibernate 【发布时间】:2021-11-29 09:37:02 【问题描述】:您好,我是 Hibernate 的新手,正在尝试构建一个 Rest APP。
如上图所示,我在数据库中有 3 个表。
USERS 表与 GROUPS 表有 ManyToMany 关系,USER_GROUP 是关联表。
我正在使用 ORM、Hibernate 和 CurdRepository。
我可以使用 CurdRepository 的 save() 方法插入用户表和组表。
现在我正在尝试仅在 GROUPS 表和 USER_GROUP 表中添加一行。谁能引导我走向正确的方向?
例如:
我想在 GROUPS 表中添加一个 groupid,然后将它与一个用户 id 关联
假设我想在 GROUPS 中插入 (10) groupid,在 USER_GROUP 表中插入 (14,10)。
ORM 是否可行,如果可以,如何?
提前致谢
【问题讨论】:
【参考方案1】:网上有很多关于这个模型的文章来展示如何使用 Hibernate。这是我通过谷歌搜索“休眠用户组示例”快速找到的一篇文章:https://www.codejava.net/frameworks/hibernate/hibernate-many-to-many-association-annotations-example
【讨论】:
【参考方案2】:要使用现有的连接表,USE_GROUP,用户实体将如下所示。
@Entity
public class Users
@Id
private Integer userid;
private String password;
@ManyToMany(cascade = CascadeType.MERGE, CascadeType.PERSIST )
@JoinTable(name = "USER_GROUP", joinColumns = @JoinColumn(name = "USERID") ,
inverseJoinColumns = @JoinColumn(name = "GROUPID") )
private Set<Groups> groups;
// Getter, Setter
然后客户端代码,添加新用户和组,将如下所示。
User user = new User()
// set password , etc
Set<Groups> groups = new HashSet<>();
Group group = new Group();
// set
groups.add(group);
user.setGroups(groups);
userRepository.save(user);
【讨论】:
我做了同样的事情,但我有疑问。有人建议我实现单例设计模式,所以使用 new 关键字是个好主意吗?有没有更好的方法?以上是关于插入一张多对多表并加入表休眠的主要内容,如果未能解决你的问题,请参考以下文章