当前位置: 首页 > 知识库问答 >
问题:

在另一个关系中使用多对多连接表

云鸿祯
2023-03-14

我有一个关于Hibernate ManyToMany映射的问题。我有两个类 A 和 B,它们之间的映射是由 Hibernate 解析的 ManyToMany 映射:

@Entity
@Table(name="A")
public class A {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    @JoinTable(name="A_B", joinColumns=@JoinColumn(name="A_id"), inverseJoinColumns=@JoinColumn(name="B_id"))
    private Set Bs;
}

@Entity
@Table(name="B")
public class B {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany(mappedBy="b")
    private Set As;
}

用户和组的外键是“A_id”和“B_id”。联接表称为A_B。

现在,我想加上C。我想A_B与C有关系,与C创建多对多关系,A_B我可以称之为A_B_C。

@Entity
@Table(name="C")
public class C {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    @JoinTable(name="A_B", joinColumns=@JoinColumn(name="C_id"), inverseJoinColumns=@JoinColumn(name="?????"))
    private Set A_Bs; // Don't have any UserGroup entity !
}

编辑:所以我会创建一个_B实体,A和B和A_B的关系为2 @OneToMany。

问题:关于主键,A_B的最佳解决方案是什么?嵌入的主键还是生成的Id?我不想有重复的(user_id,group_id):/只有唯一约束就足够了?

A_B呢

如有任何帮助,我将不胜感激。

非常感谢!

共有1个答案

凌声
2023-03-14

我认为您不需要与组中的用户相关联,因为是一个类似于字典的东西。

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    @JoinTable(name = "users_groups")
    private Set<Group> groups;

}

@Entity
@Table(name="groups")
public class Group {

    @Id
    @GeneratedValue
    private Long id;

}

您需要@ManyToMany通讯中的关联

@Entity
@Table(name="newsletters")
public class Newsletter {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    @JoinTable(name="newsletters_groups")
    private Set<Group> groups;
}  
 类似资料:
  • 我需要在我的数据库中创建多个多对多的关系。 有一个“主”表,我们称之为“项目”。 然后有3个表包含“选项”。 假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。 可以将多个类别、区域和用户分配给多个项目。 因此,我有两个选项来创建这种关系: 1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方

  • 问题内容: 假设我有一个具有两个不同的一对多关系的对象。很像: 和 假设我的对象有两个与这两个对象相关的列表。 我已经阅读了以下示例:http : //forum.springsource.org/showthread.php?50617-rowmapper -with-one-to-many- query,其中说明了如何使用单个一对多关系来执行此操作。为了您的方便,这里是替代: 我认为这并不涉及

  • > 我有3个实体用户、应用程序和角色。 null null Role1.getUsers().Add(user);Role1.getUsers().Add(user); role2.getUsers().add(user);role2.getUsers().add(user); user.getApplications().add(app1);user.getApplications().add(

  • 用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,

  • 我正在尝试用JDBI编写一个对象查询来处理一对多关系。正如在文档中所看到的,就是这样做的方法。但是我把这些错误归咎于构造函数; 更新:为每个实体保留一个构造函数。

  • 问题内容: 我有2张桌子: 电影:movieID 用户:userID 这些表通过Queue表具有多对多关系,并带有一个附加属性listOrder: 队列:movieID,userID,listOrder 我正在尝试使用EclipseLink对此模型建模,但是却收到“不兼容映射”错误。这是我的代码的示例: QueueItemPK的目的是使我可以拥有movieID和userID的复合主键。我不确定这是