【问题标题】:How to model compound key in Hibernate?如何在 Hibernate 中为复合键建模?
【发布时间】:2019-03-08 22:08:10
【问题描述】:

我正在使用 Hibernate 在 java 中建模一个模型类。但是数据库中的表已经存在,我想使用它。

问题是表没有ID。此外,更糟糕的是,表中的元组由四列组成,它们的组合形成了“一种标识/ID”。此外,这些列不是其他表的 FK。

有没有一种方法可以用 java、hibernate 等进行建模,而无需“修复/更改”表?

谢谢

【问题讨论】:

  • 你的意思是:表没有Primary Key
  • @OlivierJacot-Descombes - 我认为 OP 意味着该表具有复合主键,而不是单个列 ID。

标签: java oracle hibernate spring-boot


【解决方案1】:

您必须使用 @EmbeddedId 示例定义您的类:

您已经存在的实体:

@Entity
@Table(name = "ENTITY_EXAMPLE")
public class EntityExample {

    // this is your new class Embeddable
    @EmbeddedId
    private EntityExampleId id;

    //other fields


    //geters y seters
      //////////////////////////

 }

并且必须创建其他类 @Embeddable 包含您的复合 ID 的 4 列

@Embeddable
public class EntityExampleId implements Serializable{

    private static final long serialVersionUID = 1L;

    @Column(name = "COLUMN1", nullable = false)
    private Integer col1; 

    @Column(name = "COLUMN2", nullable = false)
    private Integer col2; 

    @Column(name = "COLUMN3", nullable = false)
    private Date col3;

    @Column(name = "COLUMN4", nullable = false)
    private Date col4;

    //geters y seters
   //////////////////////////

}

更多信息请参阅参考资料

【讨论】:

  • 谢谢。我让它工作。但它只是在我将 hashCode 和 Equals 方法设置为仅使用 ID 构建之后才起作用
  • 对不起,我是这么认为的。请将 aswer 标记为正确的@ViniciusdeAndrade 问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2018-09-19
  • 2017-08-19
  • 2020-06-22
  • 2021-12-12
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多