Spring 数据 JPA 方法命名包含对双精度值的查询

Spring Data JPA Method naming contains query for double value

我有一个包含一些属性的实体,我想使用来自前端控制器的一个参数为其所有属性编写一个类似(包含)的查询。我已经成功地实现了字符串值,但对于数字(长、双)值,我不能使用包含关键字,因为它会抛出异常(参数值 ['%10%'] 与预期类型不匹配 java.lang.Double ()... 某物...)。

我的实体字段

    private String firstName;
    private double rating;

我的仓库查询方法

    List<MobileUser> findByFirstNameIgnoreCaseContainingOrRatingContaining(String value, double value2);

我的服务层方法只取一个值

public List<MobileUserDTO> getMobileUsersLike(String value) {
    // parses the value and if it is not a numeric value it will be -1 (this is also a bad logic)
    Double parseDouble = (double) -1;
    try { parseDouble = Double.parseDouble(value); } catch (NumberFormatException ignored) { }
    // calls repository
    List<MobileUser> allUsersLike = mobileUserRepository.findByFirstNameIgnoreCaseContainingOrRatingContaining(value, parseDouble);
    return getMobileUserDtoList(allUsersLike);
}

我该如何实现?谢谢。

您可以尝试使用JPQL查询:

@Query("FROM MobileUser WHERE firstName like %:firstName% OR CAST(rating AS TEXT) LIKE %:rating% ")
List<MobileUser> findByNameAndRating(@Param("name") String firstName, @Param("rating") String rating);

您不能将 SQL like 用于 double,除非您将其转换为 String