2013-10-15 15 views
1

我有一個命名查詢,下面是可選參數,它是flightNumber,departureAirport和arrivalAirport。但是當我沒有給這些參數賦予任何值時,這個查詢就不起作用。帶有可選參數的命名查詢不能在mysql中工作

@Query("from CapacityMonitor 
    where carrierCode = :carrierCode and 
    (:flightNumber IS NULL OR flightNumber = :flightNumber) and 
    (:departureAirport IS NULL OR departureAirport = :departureAirport) and 
    (:arrivalAirport IS NULL OR arrivalAirport = :arrivalAirport) 

我可以改變一個查詢,但我有@Query批註僅

+0

'IS NULL'不會爲您節省任何值:) –

+0

但在其他文章中,這是他們爲可選參數提供的解決方案。 – Ankit

+0

當然,它是解決方案的50%,但您必須將該參數設置爲「null」。在我的答案中解釋過,'null是null'返回'true'的基礎。 –

回答

1

所以,你要保持你的查詢它的方式,使之帶或不帶參數的工作使用。那麼,你不能那樣做。如果查詢需要參數,那麼你必須設置它們。

最好的辦法是以相同的方式保留查詢並將參數設置爲NULL,以便在這些情況下:param IS NULL返回TRUE並返回所有結果。這樣你會僞造一場比賽。

無論如何,參數必須始終設置。

+0

感謝mostacho你的答覆,但我保持它爲「:param IS NULL」,但這不是工作你的yim問 – Ankit

+0

正如我所說,「參數必須始終設置」。將其設置爲「NULL」來僞造一個匹配。 –

+0

謝謝,你能告訴我,如果我的查詢看起來像這樣,那麼你能幫我解決 – Ankit