{
"store_ids":[
{
"name":"Gupta General store",
"store_id":"SSC10000020"
},
{
"name":"Gupta General store2",
"store_id":"SSC10000022"
}
]
}
这是 mysql 表列中的 json 对象,我需要一个 jpa 查询,其中我想提取表中“store_id”与给定字符串列表中匹配的所有行
@Query("SELECT m FROM MerchantManager m WHERE (JSON_EXTRACT(m, '$.store_ids.store_id') IN ('SSC10000020','SSC10000022'))")
List<MerchantManager> findByStoreId();
我想知道如何在 Spring Boot 中编写这个查询
对于整个 JSON 数组中所有行的单值搜索,您可以这样搜索:
@Query(value = "SELECT * from MerchantManager where JSON_CONTAINS(JSON_EXTRACT( columnName, '$.store_ids[*].store_id'), '\"SSC10000020\"')",nativeQuery = true)
但是如果要搜索多个值,则需要使用
JSON_CONTAINS
函数的 OR 运算符。
@Query(value = "SELECT * from MerchantManager where JSON_CONTAINS(JSON_EXTRACT( columnName, '$.store_ids[*].store_id'), '\"SSC10000020\"' OR JSON_CONTAINS(JSON_EXTRACT( columnName, '$.store_ids[*].store_id'), '\"SSC10000022\"')",nativeQuery = true)
使用
IN
运算符可能还有其他有效的方法,但我不知道。我希望这有帮助。