Java JPA。 SQL 接受 '_' LIKE 错误

标签 java mysql sql spring-boot spring-data-jpa

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

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

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

附言我正在使用 MySQL

最佳答案

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

例如:

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

然后调用findByNameIgnoreCaseContainingOrDescriptionIgnoreCaseContaining(name, description)

关于Java JPA。 SQL 接受 '_' LIKE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558667/

相关文章:

MySQL INNODB 优化和索引

mysql - sql子查询中如何使用Union

java - 从 Eclipse 插件运行程序

java - 自动执行 jprofiler 分析并保存快照

java - jsr223 + 编写脚本解释器

java - 在 Hibernate @Formula 中使用 DATE_ADD

sql - 插入大量记录而不锁定表

sql - 是否需要外键约束?

sql - 更新语句失败,因为我有一个名为 order 的列

java - 创建条件语句,一次查询得到结果和行数