【发布时间】:2014-05-08 23:25:45
【问题描述】:
我正在尝试使用 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