Java JPA.SQL 接受 '_' 错误与 LIKE



我正在使用Spring Data JPA查询从数据库中获取搜索结果。我正在按名称或描述搜索结果(这些是我表中的列)。

List<MyClass> findByNameIgnoreCaseContainingOrDescriptionIgnoreCaseContaining(String name, String description);

当用户尝试搜索包含特殊字符的内容(例如"Book ( _ , # , %, etc.)")时,这就是问题。在这种情况下,JPA 使用接受下划线或其他特殊字符(如 LIKE 模板的一部分)而不是搜索条件的LIKE构建 SQL 查询。我怎样才能避免这种情况?

附言我正在使用 MySQL

我不完全确定它在 spring-data 中是如何工作的,也许有一种更干净的方法,但您可以在将这些字符传递给查询之前屏蔽它们。

例如:

String name = name.replace("_", "\_");
String description = description.replace("_", "\_");

然后打电话给findByNameIgnoreCaseContainingOrDescriptionIgnoreCaseContaining(name, description).

相关内容

最新更新