【发布时间】:2013-10-22 21:54:06
【问题描述】:
我在下面有一个命名查询,用于可选参数,即航班号、出发机场和到达机场。但是当我没有为这些参数提供任何值时,此查询不起作用。
@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 注释
【问题讨论】:
-
IS NULL不会让你免于不提供任何价值:) -
但在其他帖子中,这是他们为可选参数提供的解决方案。
-
当然是 50% 的解但是你必须将参数设置为
null。正如我在回答中解释的那样,这是在null is null返回true的基础上工作的。 -
这意味着我写的查询是正确的,我应该做些什么来使它工作
-
尝试使用 CriteriaUpdate insted of NamedQuery as mentioned here