多くのテストの後、抽象的な親 (単一テーブルの継承) と抽象の子テーブル (クラスごとに 1 つのテーブルの継承) で動作する Java パラメーター化を取得しようとして、私はあきらめました。
可能かもしれませんが、Hibernate が抽象 (パラメータ化された) クラスをエンティティとしてインスタンス化しようとすると、問題が発生することがよくあります。これは、「A にはバインドされていない型があり、明示的なターゲット エンティティがありません」というエラーが表示される場合です。これは、Hibernate がパラメーター化された型のパラメーター値を持っていないことを意味します。拡張クラスのテストは問題ないことがわかりましたが、親エンティティの周りのテストは壊れていました。
JPA継承を使用して書き直し、パラメーター化されたものを拡張クラスに移動することをお勧めします。そうすれば、データベースから同じポリモーフィズムを取得できます。
@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "CLASS_TYPE", discriminatorType = DiscriminatorType.STRING)
public abstract class ClassA {
[...]
}
拡張子 B:
@Entity
@DiscriminatorValue=("B")
public class ClassB extends ClassA {
@OneToOne
@JoinColumn(name = "mycolumn_id")
private Integer instance;
[...]
}
拡張子 C:
@Entity
@DiscriminatorValue=("C")
public class ClassC extends ClassA {
@OneToOne
@JoinColumn(name = "mycolumn_id")
private String instance;
[...]
}