具有连接和继承的JPA Criteria API查询

问题描述 投票:1回答:1

我正在尝试使用JPA Criteria API编写查询。我有以下课程:

Class Booking {

  @ForeignKey(name = "BVisit_ID_FK")
  private List<BVisit> BVisits = new LinkedList<>();

    //other properties
    ...
}

Class Visit{

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "ID")
  private Long id;

}

Class VisitSpecial extends Visit{

  @Column(name = "ARRIVAL_TIME", nullable = false)
  private Date arrivalTime;

  @Column(name = "DEPARTURE_TIME", nullable = false)
  private Date departureTime;

  //other properties...
}`

如何使用JPA Criteria Api(和元模型)编写查询,该查询将查找所有具有以下内容的预订日期值(参数)介于最小到达时间与预订访问的最大出发时间之间的访问。我使用org.springframework.data.jpa.domain.Specification

查询应该看起来像这样:

SELECT Booking 
from Booking B, Visit V, VisitSpecial VS
where Visit.bookingId = Booking.id and Visit.id = VisitSpecial.id
      and VisitSpecial.arrivalTime = (SELECT MIN(VisitSpecial.arrivalTime) from VisitSpecial VS1 WHERE V.id = VS1.id)
      and VisitSpecial.arrivalTime <= :date
      and VisitSpecial.departureTime = (SELECT MAX(VisitSpecial.departureTime) from VisitSpecial VS1 Where V.id = VS1.id)
      and VisitSpecial.departureTime >= :date
spring jpa jpa-2.0 criteria-api
1个回答
0
投票

请参阅我的答案here,以了解通过JP​​A标准InheritanceType.JOINED处理Subquery和其他继承策略。

© www.soinside.com 2019 - 2024. All rights reserved.