関連クラスを作成できるHibernate / JPAアノテーション(正直なところ、違いはまだわかりません)がいくつかあります。このクラスは、関連する 2 つのアイテムを 1 つのオブジェクトに結合します。私はもともと使用して@JoinTable
いましたが、関連付けにさらに多くのメタデータが必要であることに気付いたので、コードを別のオブジェクトタイプに変換する必要がありました.
今のところ、オブジェクト@Id
の列をマークするために使用し、.ID
@NaturalId (mutable = false)
String uuid
私の関連付けクラスは@ManyToOne
テーブルを使用して作成していますが、調べてみると、テーブルは@Id
フィールドをマッピング列として使用しています。他のシステムに関係/関連付けを簡単に転送するために、この関連付けクラスに を使用すること@NaturalId uuid
をお勧めします。
正しい識別子を使用する関係を取得するにはどうすればよいですか?
参考までに、私の DB と Java コードは次のようになります。
AssociationsTable
----------------------------------------------
| ID | META DATA | ID ASSOC. 1 | ID ASSOC. 2 |
----------------------------------------------
| 1 | stuff | 1 | 2 |
----------------------------------------------
Objects
------------------------------
| ID | META DATA | UUID |
------------------------------
| 1 | stuff | FOO-123 |
------------------------------
| 2 | stuff | BAR-456 |
------------------------------
Association Class{
ObjA main;
ObjA sub;
@ManyToOne
getMain()
@ManyToOne
getSub()
}
ObjA Class{
Long id;
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
@XmlElement
@Column(name = "ID", unique = true, nullable = false)
getId()
String uuid;
@NaturalId (mutable = false)
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
getUUID()
}