包含的Spring数据不适用于整数

时间:2018-06-19 09:26:37

标签: java spring-data

我正在实施搜索方法。而且我想整合海浪。 所以我在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)]

知道为什么吗?

1 个答案:

答案 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);