我使用的是Spring,Hibernate和JPA Criteria API。
我们说我有一个Vehicle类层次结构和一个Tire类。每辆车可以有多个轮胎。
车辆 - 油轮,摩托车
轮胎
我想查询容量超过100加仑的油轮上的小轮胎。 但是,提尔的车辆属性是车型。只有一个车辆子类(油轮)具有"容量"属性。 如何告知标准api仅加入Tankers?
谢谢!
我确定之前已经提出过这个问题,但我认为我错过了正确的术语来成功搜索。
答案 0 :(得分:0)
试试这个:
@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