2013-10-15 17 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