Mysql Spring CriteriaBuilder查询JSONArray数据
我使用了一个表来存储JSON数据。对于特定的客户机,我创建12个月的记录,并以JSONArray格式存储12个月的数据。这样,我为每个客户机创建一行Mysql Spring CriteriaBuilder查询JSONArray数据,mysql,spring-boot,spring-data-jpa,Mysql,Spring Boot,Spring Data Jpa,我使用了一个表来存储JSON数据。对于特定的客户机,我创建12个月的记录,并以JSONArray格式存储12个月的数据。这样,我为每个客户机创建一行 approved字段可以是true、false或null。我需要做的是,检查approved值是否为真,以及数据是否为空。我试图搜索JSON数据查询,但找不到解决方案 CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<ClientDa
approved
字段可以是true、false或null。我需要做的是,检查approved
值是否为真,以及数据是否为空。我试图搜索JSON数据查询,但找不到解决方案
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<ClientData> clientQuery = cb.createQuery(ClientData.class);
Root<ClientData> clientMaster = clientQuery.from(ClientData.class);
..
..
..
predicates.add(cb.isTrue(cb.function("json_contains", Boolean.class,
clientMaster.get("Data"), cb.literal("approved"))));
predicates.add(cb.isNotNull(cb.function("json_contains", Double.class,
clientMaster.get("Data"), cb.literal("data"))));
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery clientQuery=cb.createQuery(ClientData.class);
Root clientMaster=clientQuery.from(ClientData.class);
..
..
..
add(cb.isTrue(cb.function(“json_包含”),Boolean.class,
clientMaster.get(“数据”)、cb.literal(“批准”);
add(cb.isNotNull(cb.function(“json_包含”),Double.class,
clientMaster.get(“数据”)、cb.literal(“数据”);
但这给了我一个错误:-
com.mysql.jdbc.MysqlDataTruncation:数据截断:函数JSON的参数2中的JSON文本无效。\u包含:“无效值。”位于位置1。
我使用的是MySQL版本5.7.31。如有任何帮助,请尝试
if(!CommonUtils.checkIsNullOrEmpty(filterDto.getProduct()) ) {
String a=(String.join(",",filterDto.getProduct()));
predicates.add(cb.isTrue(cb.function("json_contains", Boolean.class,
userRoot.get("product"), cb.literal("\"" + a + "\""))));
// predicates.add(userRoot.get("product").in(a));
}
非常感谢。但我知道了错误的原因。这里的数据
字段可以有空值,空值不是双精度的,空值也不是空值。