0

具体的なクラス戦略ごとにテーブルを使用しています

Vehicle
TransportationVehicle extends Vehicle
PassengerVehicle extends Vehicle.

これで 3 つのテーブルが作成されました

Vehicle
TransportationVehicle
PassengerVehicle

しかし、使用してデータベースにクエリを実行すると

from Vehicle v

Hibernate は 3 つのテーブルすべてに対してユニオン クエリを発行しますが、なぜこのようになるのでしょうか? 私はちょうど車両を求めています。

4

4 に答える 4

0

TransportationVehicle と PassengerVehicle は Vehicle のサブクラスです。Hibernate は Vehicle のすべてのインスタンスを返します (TransportationVehicle と PassengerVehicle も Vehicle のインスタンスです)。Vehicle のみを選択する場合は、階層を作成できます。

AbstractVehicle
Vehicle extends AbstractVehicle
TransportationVehicle extends AbstractVehicle
PassengerVehicle extends AbstractVehicle

AbstractVehicle には @MappedSuperclass のアノテーションを付ける必要があります。

于 2015-09-08T14:14:45.610 に答える
0

@Inheritance(strategy=InheritanceType.JOINED) アノテーションを試すことができます

于 2015-09-08T14:21:20.400 に答える
0

これは望ましい動作であり、ほとんどの ORM クエリ言語のコア機能です。

結果をエンティティの 1 つのクラスに制限するには:

"from Vehicle v where v.class = " + Vehicle.class.getName();

于 2015-09-08T18:45:05.333 に答える