問題タブ [naturalid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - Hibernate の @NaturalId に相当する JPA
Hibernate では@NaturalId
、エンティティのいくつかのプロパティを使用して一意のキーを作成できます。
の一部である JPA と同等の注釈はありjavax.persistence
ますか?
java - @Id の代わりに @NaturalId を使用する Hibernate @ManyToOne 参照クラス
関連クラスを作成できるHibernate / JPAアノテーション(正直なところ、違いはまだわかりません)がいくつかあります。このクラスは、関連する 2 つのアイテムを 1 つのオブジェクトに結合します。私はもともと使用して@JoinTable
いましたが、関連付けにさらに多くのメタデータが必要であることに気付いたので、コードを別のオブジェクトタイプに変換する必要がありました.
今のところ、オブジェクト@Id
の列をマークするために使用し、.ID
@NaturalId (mutable = false)
String uuid
私の関連付けクラスは@ManyToOne
テーブルを使用して作成していますが、調べてみると、テーブルは@Id
フィールドをマッピング列として使用しています。他のシステムに関係/関連付けを簡単に転送するために、この関連付けクラスに を使用すること@NaturalId uuid
をお勧めします。
正しい識別子を使用する関係を取得するにはどうすればよいですか?
参考までに、私の DB と Java コードは次のようになります。
java - Hibernate エンティティの複合 @NaturalId
エンティティ アプリケーションの生成 ID には、トリガーが使用されます。したがって、生成された値をエンティティに割り当てるには、次のような構造を使用します。
SelectorGenerator
@NaturalId
(論理的に)一意の値を持つ必要があるフィールドに使用する必要があります。ただし、一部のテーブルには、すべて一意の値を持つフィールドがありません。SelectGenerator
複数の自然 ID はサポートされていません。どうすればこの状況を回避できますか?
java - ナチュラル ID を使用した Hibernate エンティティ キャッシング
Dictionary のフィールド 'code' で結合されたエンティティ Note があります。すべてのメモを取得したいのですが、n+1 の問題があります。メモを取得しているときに、休止状態でテーブル Dicionary からもデータを取得し、1 つのメモごとに 1 つの追加クエリを実行します (辞書がまだ第 1 レベルのキャッシュにない場合)。
ID で辞書を取得している場合にのみ機能する第 2 レベルのキャッシュ (ehcache を使用しています) を有効にしました。クエリ キャッシュを使用したくありません。たぶん、二次キャッシュから一次キャッシュに辞書をロードする必要がありますか?
これが十分に明確であることを願っています。ありがとうございました。