【问题标题】: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 是否可行,如果可以,如何?

提前致谢

【问题讨论】:

    标签: java spring-boot hibernate jpa many-to-many


    【解决方案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 关键字是个好主意吗?有没有更好的方法?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2021-07-28
      • 2017-02-12
      • 1970-01-01
      • 2015-06-29
      • 2011-03-23
      • 1970-01-01
      相关资源
      最近更新 更多