我认为你无法使用方法名称方法来进行查询定义。从文档(参考):
尽管从方法名派生一个查询很方便,但可能会遇到这样一种情况,即方法名解析器不支持一个人想使用的关键字,或者方法名不必要地变得丑陋。因此,你可以通过命名约定使用JPA命名查询(有关更多信息,请参见使用JPA NamedQueries),或者使用@Query注释查询方法。
我认为你在这里遇到了这种情况,因此下面的答案使用@Query批注方法,这几乎与方法名方法(参考)一样方便。
@Query("select foo from Foo foo where foo.bar = :bar and " + "(:goo is null or foo.goo = :goo)") public List<Foo> findByBarAndOptionalGoo( @Param("bar") Bar bar, @Param("goo") Goo goo);


