@Query("from PrsBookingProcess pbp where (:bookingOwnerCode='' OR pbp.bookingOwnerCode = :bookingOwnerCode)"
+ "and (pbp.crtDttime BETWEEN :fromDate AND :toDate)"
+ "and (:bookingProcStatus is null OR pbp.bookingProcStatus = :bookingProcStatus)"
List<PrsBookingProcess> findByPnrbydateRangeandOperator(
@Param("bookingOwnerCode") String bookingOwnerCode,
@Param("fromDate") Calendar fromDate,
@Param("toDate") Calendar toDate,
@Param("bookingProcStatus") String bookingProcStatus);
这是我的JPA查询命中Postgres DB。我的bookingOwnerCode值仅在我使用空引号(&#39;&#39;)检查该值时才为空。如果我通过制作它们来检查:BookingOwnerCode为null并且从UI中将它们设为null它将不会获取我的记录。
与bookingProcStatus一样。如果我没有在UI中给出任何值并运行上面的查询,它将不会获取任何东西,除非我给它一些值。
我正在使用PGAdmin3进行postgrep和JPA进行查询。
答案 0 :(得分:0)
您可以使用:bookingOwnerCode is null OR :bookingOwnerCode = ''
而不只是:bookingOwnerCode = ''
。
或者您可以编写一个单元/集成测试来验证预期的行为。