我正在实施搜索方法。而且我想整合海浪。 所以我在repo中有这个方法:
public interface CarRepository extends CrudRepository<Car, Long> {
List<Car> findByRocznikIsContaining(Integer rocznik);
}
我的实体:
@Entity
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String model;
private @Lob
String historiaSamochodu;
private Double przebieg;
private Integer rocznik;
但是当我向我的方法传递任何整数时,例如:
findByRocznikIsContaining(5);
它会抛出错误:
java.lang.IllegalArgumentException: Parameter value [%5%] did not match expected type [java.lang.Integer (n/a)]
知道为什么吗?
答案 0 :(得分:0)
我已经检查了此链接https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation,对于findBy...Containing
,它显示了以下伪SQL代码… where x.firstname like ?1 (parameter bound wrapped in %)
。您的情况将在where x.roczik like %5%
中进行转换。基本上%5%
是一个字符串,不能转换为整数。
您可以尝试为该方法添加@Query
注释,如下所示:
@Query("select c from Car c where to_char(c.rocznik) like %?1%")
List<Car> findByRocznikIsContaining(Integer rocznik);