gpt4 book ai didi

mysql - Spring Data JPA 方法命名包含双值查询

转载 作者:行者123 更新时间:2023-11-29 06:27:34 25 4
gpt4 key购买 nike

我有一个包含一些属性的实体,我想使用来自前端 Controller 的一个参数为其所有属性编写一个类似(包含)的查询。我已经成功地实现了字符串值,但对于数字(长整型、 double )值,我无法使用 contains 关键字,因为它会引发异常(参数值 ['%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

关于mysql - Spring Data JPA 方法命名包含双值查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com