【发布时间】:2021-08-22 16:11:33
【问题描述】:
我有两个 JPA 实体:
public class BusinessTripRequest extends StandardEntity {
@OneToMany(mappedBy = "businessTripRequest", fetch = FetchType.LAZY)
@OnDelete(DeletePolicy.CASCADE)
@Composition
protected List<HotelBooking> hotelBookings;
}
public class HotelBooking extends StandardEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BUSINESS_TRIP_REQUEST_ID")
protected BusinessTripRequest businessTripRequest;
@Column(name = "JOINT_CHECK_IN")
protected Boolean jointCheckIn;
}
我尝试编写一个 JPQL 查询来提取以下请求:
- 如果参数为
false,则提取所有带有空hotelBookings的请求,并且每个预订都有参数jointCheckIn的所有请求设置为false - 如果参数为
true,则提取所有具有一个或多个预订的请求,jointCheckIn设置为true
我写了这样的东西
从 nk$BusinessTripRequest 中选择 e 加入 e.hotelBookings hb
其中 (true = ? 并且 e.hotelBookings 不为空并且 hb.jointCheckIn = 真的)
或(false = ? 且 e.hotelBookings 为空)
由于第一个条件,参数为true时效果很好。但是我写不出false参数的工作条件
【问题讨论】:
-
你能有 2 个查询并根据你的标志参数调用其中一个吗?
-
用
:1代替?怎么样? -
@tremendous7 不幸的是,没有。该参数在过滤器中使用并被替换而不是问号。我只能更改此查询
-
@dan1st 在我正在使用的框架中,有一个问号而不是一个参数