所以我有一个zipcodes列表,我应该如何将其保存到mySql中?我当时认为是一个JSON数组。现在,我一直坚持在给定的JSON数组中找到特定的邮政编码。
insert into Test values (2, '[22279, 22510, 12345, 65412, 78954]');
我以为我会使用JSON_CONTAINS,但我似乎无法弄清楚如何使用它:
SELECT * FROM Test WHERE
JSON_CONTAINS(testJson, 22079);
我在上述查询中收到此错误:
SELECT * FROM Test WHERE JSON_CONTAINS(testJson, 22079) LIMIT 0, 1000 Error Code: 3146. Invalid data type for JSON data in argument 2 to function json_contains; a JSON string or JSON type is required.
哦,我如何使用hibernate来执行上述查询?
答案 0 :(得分:0)
这似乎有效:
SELECT * FROM Test WHERE
JSON_CONTAINS(testJson, '12345');
这也来自Postman:
{
"test": {
"id": "5",
"testJson" : "[22079, 22310, 12345, 65412, 78954]"
}
}
Java pojo看起来像:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Test {
@Id
private Integer id;
private String testJson;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTestJson() {
return testJson;
}
public void setTestJson(String testJson) {
this.testJson = testJson;
}
}
答案 1 :(得分:0)
我发现,如果列表中的值是字符串,则必须使用双引号搜索它们(因为字符串必须用双引号括起来才能成为有效的JSON)。
示例:
CREATE TABLE Test (
id INT PRIMARY KEY,
testJson JSON
);
insert into Test (id, testJson) values (1, '["Hello", "Goodbye", "Now", "Later", "Sometime"]');
insert into Test (id, testJson) values (2, '["Hi", "Bye", "Today", "Tomorrow", "Yesterday"]');
SELECT id FROM Test WHERE JSON_CONTAINS(testJson, '"Hi"');
返回:2