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

Spring JPA-带有两个主键的实体

宿景曜
2023-03-14
@Entity
public class Label {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne
    @JoinColumn(name = "text_id")
    private Text text;

}
@Entity
public class Text {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "text", columnDefinition = "TEXT")
    private String text;

    @OneToMany(mappedBy = "text")
    private List<Label> labels;

    @ManyToOne
    @JoinColumn(name = "language_id")
    private Language language;

}
@Entity
public class Language {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "code")
    private String code;

    @OneToMany(mappedBy = "language")
    private List<Text> texts;

}
text_id     language_id     text
------------------------------------
1           1               Example
1           2               Beispiel

共有1个答案

汪建德
2023-03-14

您可以在这里找到两种解决方案:如何在JPA中创建和处理复合主键

  • 第一个基于@embeddable类。
  • 第二个基于@idclass类。

@IDClass解决方案摘要:

public class LabelRepositoryKey implements Serializable {
  private Long textId;
  private Long languageId;
}
@Entity @IdClass(LabelRepositoryKey.class)
public class LabelRepository {
  @Id
  private Long textId;
  @Id
  private Long languageId;
  @Column(name = "text")
  private String text;
}
 类似资料:
  • 如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?

  • 我有两个表,在我的Spring代码中是学生和课程。我想创建一个关系表,“获取课程”。我只有学生ID和课程ID。我可以在我的java代码中创建一个具有两个主键的表,但我不能将它们声明为外键。 我尝试了这个解决方案,将两个外键作为主键,但没有成功,我认为其中缺少了一些部分。因此,我尝试了基于此解决方案的方法: (学生实体有id, name, surname)(课程实体有id, Coursename)

  • 问题内容: 我正在尝试更新具有两个主键的Model。 模型 移民 这是应该更新库存模型的代码,但不是。 我收到此错误: 我也尝试使用updateOrCreate()方法。它不起作用(我得到同样的错误)。 谁能告诉我们应该如何更新带有两个主键的Model? 问题答案: 我已经遇到过几次这个问题。您需要覆盖一些属性: 和方法(功劳): 请记住,此代码需要引用Eloquent Builder类, 我建议

  • 在实体框架中,我想使用两个外键作为另一个实体类型的主键。 但是,这会给我一个缺少键的错误。 我知道我可以定义另外两个属性来保存引用实体类型的主键。Visual Studio是否不够聪明,无法自行使用它们的主键?

  • 问题内容: 我正在尝试使用JPA / Hibernate设置以下表: 可能有很多用户,每个用户最多只能有一个验证码,也可能没有。 这是我的课程: 我创建一个用户,然后尝试使用以下代码添加验证代码: 当我尝试运行它时,我收到org.hibernate.PersistentObjectException:分离的实体传递给持久化:用户 我还尝试在Validation类中使用以下代码: 当我创建验证码时,

  • 我们系统的所有用户都来自一个主“用户”类。同样,我们希望以相同的方式构造数据库,拥有一个主“用户”表,该表与特定用户类型的必要表连接,以提供额外的用户信息。 以这三个基本表格为例: 表用户 user_id|user_email|user_firstname|user_lastname|... 表雇员 user_id|employee_staff_number|... 表管理 user_id|adm