簡體   English   中英

JPQL 查詢列表中的參數

[英]JPQL query for parameter in list

我有兩個 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

我寫了這樣的東西

select e 從 nk$BusinessTripRequest e 加入 e.hotelBookings hb
其中(true =?且 e.hotelBookings 不為空且 hb.jointCheckIn = true)
或(false =? 並且 e.hotelBookings 為空)

由於第一個條件,當參數為true時效果很好。 但是我不能為false參數寫一個工作條件

評論中建議的解決方案

select e
from nk$BusinessTripRequest e
where (true = ? and e.id in (select hb1.businessTripRequest.id
                         from HotelBooking hb1
                         where hb1.jointCheckIn = true))
   or (false = ? and {E}.id not in (select hb1.businessTripRequest.id
                                    from nokia$HotelBooking hb1
                                    where hb1.jointCheckIn = true))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM