次のテーブル構造が与えられていますが、これは変更できません。
Table A {
idA auto_increment primary key
[... some values...]
}
Table B {
idB auto_increment primary key
idA foreign key referencing Table A
[... some values...]
}
Table C {
idC auto_increment primary key
idA foreign key referencing Table A
[... some values...]
}
次のように、これらのテーブルを抽象スーパー クラスと 2 つのサブクラスにマップします。
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class A {
@Id
@GeneratedValue(strategy=IDENTITY)
private int aID;
}
@PrimaryKeyJoinColumn (name = "idA")
public class B extends A {
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int bID;
}
@PrimaryKeyJoinColumn (name = "idA")
public class C extends A {
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int cID;
}
これらの注釈は正しくなく、hibernate はサブクラスの 2 つの ID を処理できないようです。
指定されたテーブル構造を変更できないと仮定すると、テーブル構造をクラス構造にマップする最良の方法は何ですか?