MYSQL LIKE 查询在 MYSQL 数据库中工作,但在 Spring JPA 中工作
MYSQL LIKE query working in MYSQL database but in Spring JPA
我有一个查询要使用 MYSQL 中的 like 运算符搜索特定行,它 运行 完全符合 mysql workbench,但我似乎不能使用 nativequery 在 Spring 的 JPA 上实现 运行。
MYSQL 中的查询是:
SELECT * FROM product where PRODUCT_ID LIKE '33__:modelId00000000';
当我在 workbench 中测试它时它有效:
其中我使用通配符查找在正确字符位置包含特定字符串的所有产品。 productId 以 33 开头,然后是 0-100,然后是型号 ID,因此 %:modelId% 在这里不起作用。这是我现在的 JPA 查询,但它 returns 为空。
@Query(value = "SELECT * FROM product where PRODUCT_ID LIKE '33__:modelId00000000'", nativeQuery = true)
List<Product> getProductByModelId(String modelId);
允许返回什么,例如在这种情况下 modelId 为“99”:
- 33009900000000
- 33019900000000
- 33029900000000
- 33039900000000
- 33559900000000
- 33899900000000
- 33999900000000
或许,你可以这样尝试:
SELECT * FROM product where PRODUCT_ID LIKE CONCAT('33%',:modelId,'00000000')
但是由于我不熟悉 JPA,所以我不确定这个查询是否可以避免 MySQL 注入。
我有一个查询要使用 MYSQL 中的 like 运算符搜索特定行,它 运行 完全符合 mysql workbench,但我似乎不能使用 nativequery 在 Spring 的 JPA 上实现 运行。 MYSQL 中的查询是:
SELECT * FROM product where PRODUCT_ID LIKE '33__:modelId00000000';
当我在 workbench 中测试它时它有效:
其中我使用通配符查找在正确字符位置包含特定字符串的所有产品。 productId 以 33 开头,然后是 0-100,然后是型号 ID,因此 %:modelId% 在这里不起作用。这是我现在的 JPA 查询,但它 returns 为空。
@Query(value = "SELECT * FROM product where PRODUCT_ID LIKE '33__:modelId00000000'", nativeQuery = true)
List<Product> getProductByModelId(String modelId);
允许返回什么,例如在这种情况下 modelId 为“99”:
- 33009900000000
- 33019900000000
- 33029900000000
- 33039900000000
- 33559900000000
- 33899900000000
- 33999900000000
或许,你可以这样尝试:
SELECT * FROM product where PRODUCT_ID LIKE CONCAT('33%',:modelId,'00000000')
但是由于我不熟悉 JPA,所以我不确定这个查询是否可以避免 MySQL 注入。