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

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

Barbara Streisand
リリース: 2024-11-29 05:47:11
オリジナル
412 人が閲覧しました

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

非 ID 列の Hibernate シーケンス

データベース シーケンスを使用して Hibernate で非主キー列の値を生成することは、一般的な要件です。残念ながら、hibernate には現在、これを実現するための組み込みメソッドが提供されていません。

@GeneratedValue アノテーションは、主キーの値を自動生成するために @Id と組み合わせてのみ使用できます。この問題は、Hibernate が非 ID プロパティはユーザー アプリケーションによって処理されるべきであると想定しているために発生します。

この制限を克服するには、自動生成された ID を持つ別のエンティティを作成する回避策が必要です。このエンティティは、ターゲット エンティティの非 ID プロパティに割り当てることができるシーケンス値を生成する役割を果たします。

次の例を考えてみましょう。

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(...)
  private Long number;
}

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

  @OneToOne(...)
  private GeneralSequenceNumber myVal;
}
ログイン後にコピー

このシナリオでは、 GeneralSequenceNumber の新しいインスタンスが作成され、その数値フィールドが自動生成されます。この値は、エンティティの永続化中に MyEntity の myVal プロパティに割り当てられます。

この回避策では追加のエンティティが追加されますが、Hibernate で非 ID プロパティ シーケンスを管理するためのソリューションが提供されます。よりシームレスなアプローチが実装されるまで、この方法はこの一般的な使用例に対する実用的な解決策を提供します。

以上がHibernate で非 ID 列のデータベース シーケンス値を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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