Java Spring数据JPA存储库查询-如何将@Param值映射到多个参数类型

Java Spring数据JPA存储库查询-如何将@Param值映射到多个参数类型,java,jpa,spring-data,Java,Jpa,Spring Data,我已经为一些常见的搜索功能实现了以下JPA存储库查询。 但对于该查询,由于年龄是一个整数值,映射参数是字符串值,所以我得到一些异常,如下所示。是否有任何机制可以隐式地将参数转换为相关的数据类型,而不是我们这样做。谢谢 使用公共参数进行查询 @Query("select u from User u where u.firstname = :searchText or u.age = :searchText") List<User> findBySearchText(@Param

我已经为一些常见的搜索功能实现了以下JPA存储库查询。 但对于该查询,由于年龄是一个整数值,映射参数是字符串值,所以我得到一些异常,如下所示。是否有任何机制可以隐式地将参数转换为相关的数据类型,而不是我们这样做。谢谢

使用公共参数进行查询

  @Query("select u from User u where u.firstname = :searchText or u.age = :searchText")
  List<User> findBySearchText(@Param("searchText") String searchText);
Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = character varying 
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.

您看到的问题与绑定本身无关。Spring数据基本上将您给定的值绑定到命名参数
searchText

看起来接下来发生的事情是,持久性提供程序在类型明显不匹配的情况下从中构建一些SQL。年龄似乎不是
String
类型,是吗?也就是说,我认为尝试将任意
字符串
绑定到整数(我猜是这样)首先是一种非常奇怪的方法


SQL并不是真正为支持任意文本搜索功能而构建的,schema帮助您检测无效的标准(在本例中就是这样)。您是否考虑过添加全文搜索商店(Elasticsearch、Solr等)并在这些商店中进行文本搜索?

亲爱的Oliver,非常感谢您的详细解释。祝你玩得愉快!谢谢