我目前在 Spring Data CrudRepository 中有以下方法签名:
@Query("SELECT c FROM Table c WHERE (:paramOne is null or c.fieldOne = :paramOne) AND (:paramTwo is null or c.fieldTwo = :paramTwo)")
Iterable<Table> findByParamOneAndParamTwo(@Param("paramOne") Integer p1, @Param("paramTwo") Integer p2);
这被 Hibernate 翻译成(简化的):
select * where (? is null or fieldOne=?) and (? is null or fieldTwo=?)
我用它来获得一个既可以过滤表又可以返回所有记录的方法。
我的问题是,当我尝试执行存储库的方法时,我得到一个负面的 417 (-417) Db2 错误。谷歌搜索它说这意味着
要准备的语句字符串包括参数标记作为同一运算符的操作数(例如:?>?)
即使我的 Hibernate 查询没有这样做。