我正在用Spring Boot测试Spring Data JPA,使用hibernate内核5.4.2.最终版本。
例如,我有一个包含地址和其他列的Users
表。
此表的存储库界面如下所示。
public interface UsersRepository extends JpaRepository<Users, Integer> {
List<Users> findByAddressContaining(String keyword)
}
据我所知,如果我像以前那样命名该方法,将执行下面的查询。
SELECT * FROM Users u WHERE address LIKE '%keyword%';
问题是,这种部分有效。
例如,在users
表中有两个数据,每个数据的地址为"0";abc";以及";cde";。
如果我测试findByAddressContaing("abc")
,则List<>
的结果大小为2。紧接着,如果我运行findByAddressContaining("de")
,结果应该是1,但它是2。如果我再次运行相同的方法findByAddressContaining("de")
,则结果变为1。
我找不到解决这个问题的方法。任何建议都会很有帮助。:(
问题不在于Spring Data JPA,而在于Request Parameter
这是我的控制器方法。
@GetMapping("/v2/warehouses")
public void getAllWarehouses(@RequestParam(name = "address") String address,
@RequestParam(name = "limit") Integer limit,
@RequestParam(name = "offset") Integer offset,
HttpServletResponse response) {
System.err.println("Request Param Address : " + address");
如果我使用Postman将请求发送到正确的路径,有时地址会为空。("(
这种情况正常发生吗??
所以基本问题不在于@RequestParam
注释,而在于application.properties
文件。
在我将server.tomcat.uri-encoding=UTF-8
添加到属性文件后,该错误不再发生。
谢谢!