よく忘れるのでメモ。
ValueObject(条件クラス)
public class FooCondition { private final String col1; private final String col2; public FooCondition(String col1, String col2) { this.col1 = col1; this.col2 = col2; } // getterは省略 }
クエリ
public interface FooRepository extends JpaRepository<Foo, FooPK> { @Query("SELECT x FROM Foo x " + "WHERE x.col1 = :#{#cond.col1} " + "AND x.col2 = :#{#cond.col2}") List<Foo> findByCondition(@Param("cond") FooCondition condition); }