首页 >Java >java教程 >如何在 Hibernate JPA 中为非 ID 列生成数据库序列?

如何在 Hibernate JPA 中为非 ID 列生成数据库序列?

Linda Hamilton
Linda Hamilton原创
2024-11-30 07:03:19774浏览

How Can I Generate Database Sequences for Non-ID Columns in Hibernate JPA?

在 Hibernate JPA 中使用非 ID 列的数据库序列

当使用 Hibernate 作为 JPA 提供程序时,您可能会遇到以下需求为不属于标识符的列生成值。不幸的是,通常用于自动递增主键的 @GenerateValue 注释在这种情况下不适用。

首先,了解 Hibernate/JPA 不会自动生成非 ID 属性的值非常重要。 @GenerateValue 注解仅用于管理主键生成。相反,需要数据库生成的值。

要克服此限制,请考虑使用生成的标识符创建一个单独的实体,称为“代理键实体”。然后,可以使用 OneToOne 关系将相关非 ID 列与此代理实体相关联。

示例实现:

// Surrogate Key Entity
@Entity
public class SurrogateEntity {
  @Id
  @GeneratedValue(...)
  private Long number;
}

// Main Entity
@Entity
public class MyEntity {
  @Id
  private Long id;

  @OneToOne(...)
  private SurrogateEntity myVal;
}

通过这种方法,值myVal 属性将在创建新的 MyEntity 实例时由数据库生成。此解决方法允许您利用 Hibernate 的数据库生成的值处理非 ID 列的功能。

以上是如何在 Hibernate JPA 中为非 ID 列生成数据库序列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn