休止状態の条件クエリに問題があります。私は持っている:
DetachedCriteria carCriteria = DetachedCriteria.forClass(Car.class);
List<Car> cars = getHibernateTemplate().findByCriteria(carCriteria);
for(Car car : cars) {
System.out.println("class type " + car.getClass());
}
上記は、FourByFour が Car を拡張するクラス型 model.FourByFour を出力します。DetachedCriteria で Car クラスを指定したので、クラス タイプは FourByFour ではなく Car であると予想していました。
マッピング (簡略化):
<hibernate-mapping default-access="field" default-lazy="true" package="model">
<class name="model.Vehicle" table="VEHICLE">
<id column="VEHICLE_ID" name="id" type="long">
<generator class="native" />
</id>
...
<joined-subclass extends="model.Vehicle" name="model.Car" table="CAR">
<key column="VEHICLE_ID" />
....
<joined-subclass extends="model.Car" name="model.FourByFour" table="FOUR_BY_FOUR">
<key column="VEHICLE_ID" />
</joined-subclass>
</joined-subclass>
</class>
条件クエリから返されるオブジェクトを、FourByFour オブジェクトではなく Car オブジェクトにするにはどうすればよいですか?