我正在使用 Spring、Hibernate 和 JPA Criteria API。
假设我有一个 Vehicle 类层次结构和一个 Tire 类。每辆车可以有多个轮胎。
车辆——油罐车、摩托车
胎
我想查询容量超过 100 加仑的油轮上的小轮胎。但是轮胎的车辆属性是车辆类型。只有一个车辆子类(油轮)具有“容量”属性。我如何告诉标准 api 只在 Tankers 上加入?
谢谢!
我敢肯定这已经被问过/回答过,但我认为我错过了成功搜索的正确术语。
我正在使用 Spring、Hibernate 和 JPA Criteria API。
假设我有一个 Vehicle 类层次结构和一个 Tire 类。每辆车可以有多个轮胎。
车辆——油罐车、摩托车
胎
我想查询容量超过 100 加仑的油轮上的小轮胎。但是轮胎的车辆属性是车辆类型。只有一个车辆子类(油轮)具有“容量”属性。我如何告诉标准 api 只在 Tankers 上加入?
谢谢!
我敢肯定这已经被问过/回答过,但我认为我错过了成功搜索的正确术语。
试试这个:
@Entity
public class Vehicle {
@OneToMany
private Set<Tire> tires;
}
@Entity
public class Tank extends Vehicle {
private int gallons;
}
@Entity
public class Motorcycle extends Vehicle {
}
@Entity
public class Tire {
}
public interface VehicleRepo extends JpaRepository<Vehicle, Long> {
@Query("select v.tires from Vehicle v where v.gallons > ?1")
List<Tire> findByGallonsIsGreaterThan(int gallons);
}
如果您只需要在 JPQL 查询中选择子类类型,您可以使用这种方法:
select v from Vehicle v where type(v) = Tank
select v from Vehicle v where v.class = Tank