ホームページ > Java > &#&チュートリアル > Hibernate JPA で非 ID 列のデータベース シーケンスを生成するにはどうすればよいですか?

Hibernate JPA で非 ID 列のデータベース シーケンスを生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-30 07:03:19
オリジナル
838 人が閲覧しました

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

Hibernate JPA での非 ID 列のデータベース シーケンスの使用

JPA プロバイダーとして Hibernate を使用する場合、必要な場合があります。識別子の一部ではない列の値を生成します。残念ながら、主キーの自動インクリメントに一般的に使用される @GeneratedValue アノテーションは、このシナリオには適用できません。

まず、Hibernate/JPA は非 ID プロパティの値を自動的に生成しないことを理解することが重要です。 @GeneratedValue アノテーションは、主キーの生成を管理するためにのみ使用されます。代わりに、データベースで生成された値が期待されます。

この制限を克服するには、「サロゲート キー エンティティ」と呼ばれる、生成された識別子を持つ別のエンティティを作成することを検討してください。次に、問題の非 ID 列を、OneToOne 関係を使用してこのサロゲート エンティティに関連付けることができます。

実装例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート