java - 我怎样才能设法建立多对多关系。生成的实体将具有额外的属性。

标签 java jpa

我有 2 个实体:类(class)(学生)和学生。一个学生可以在很多类(class)(比如在大学),一个类(class)有很多学生。问题是如何确保在中间生成的这个实体有 2 个主键,即每个其他实体(学生和类(class))的 ID。 我需要知道如何使用注释创建它。我在项目中使用了 EJB3 和 JPA Annotations。

最佳答案

首先,您不需要中间实体。您有两个实体和它们之间的连接表。

只有当您有关于关系的附加信息时,您才需要一个中间实体 - 例如 StudentClass 可能有 timesAbsent 列。

如果你真的需要第三个实体,你可以:

  1. 一个@EmbeddedId ,您可以在其中定义一个单独的类来保存主键的两个部分。该类必须是@Embeddable
  2. 一个@IdClass这将使您指定两个 @Id 字段。您将再次需要另一个类来保存表示 key 的两个字段。

See this question选择哪个选项。

请注意,您因此拥有一个复合主键,而不是两个主键(您不能拥有)

关于java - 我怎样才能设法建立多对多关系。生成的实体将具有额外的属性。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144462/

相关文章:

java - Spring Data JPA - 为现有集合模拟 "create + join"查询

Java 模块化算法

java - 带有元组条件的 QueryDSL 和 SubQuery

java - Hibernate 过滤器关联

java - 使用 JPA 时如何在没有主键的情况下映射数据库 View

jpa 和 native 查询

java - 简单的递归减法返回意外结果

java - 使用 Xuggle 时在 Eclipse 中检测到 fatal error

java - 如何使用 Quickbooks Online v3 Java SDK 向客户发送发票电子邮件?

java - 为什么我不能给类起不同于文件名的名称?