Genericsを使用してクラスMyCompositeKeyを作成します。
class MyCompositeKey<T> {
T compositeId0;
Integer compositeId1;
Integer compositeId2;
}
したがって、同じ複合キーを持ち、タイプのみを変更する多くのテーブルで使用できます。
class Table1<Integer> {
@EmbebedId
MyCompositeKey<Integer> compositeId;
//other attributes
}
class Table2<String> {
@EmbebedId
MyCompositeKey<String> compositeId;
//other attributes
}
//...
問題は、クラスを使用する場合です。
class MyId {
Integer id0;
Integer id1;
}
class Table3<MyId> {
@EmbebedId
MyCompositeKey<MyId> compositeId;
//other attributes
}
Hibernateは、テーブル3に存在しない列「compositeId0」を見つけようとします(私のテーブル3には複合キーid0、id1、compositeId1、compositeId2があります)。これどうやってするの?
PS:@EmbeddedIdを「MyCompositeKey.compositeId0」に入れると、クラスでは機能しますが、Integer、Long、Stringでは機能しません...Hibernateは列「value」を見つけようとするためです。