タイトルが少し変なので、はっきりさせておきます。
1対多の関係にあるガレージとビークルの2つのオブジェクトがあります。車やトラックなど、複数の種類の車両があります。タイプはVehicleテーブルに文字列として保持されます。
2つのクラスは次のとおりです。
@Entity
@Table(...)
public class Garage {
....
@Column(name = "garageId")
private Integer garageId;
@OneToMany
@JoinColumn(name = "garageId")
private Set<Vehicle> vehicles;
....
}
@Entity
@Table(...)
public class Vehicle {
....
@Column(name = "garageId")
private Integer garageId;
//could be "Truck" or "Car"
@Column(name = "type")
private String type;
....
}
車両のタイプを区別するために、現在、タイプ列を確認して列挙型を使用する必要があります。私がやりたいのは、Typeフィールドに依存するのではなく、さまざまなタイプを表すために、CarやTruckなどのVehicleのサブクラスを用意することです。そうすれば、私のコードはinstanceof
そのフィールドを使用する代わりにタイプを判別できます。
ただし、Type列の値に基づいてサブクラスをインスタンス化する方法をHibernateに指示する方法、または可能かどうかはわかりません。
私はあなたたちが与えることができるどんな助けにも感謝します。前もって感謝します!