Mysql Spring CriteriaBuilder查询JSONArray数据

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

我使用了一个表来存储JSON数据。对于特定的客户机,我创建12个月的记录,并以JSONArray格式存储12个月的数据。这样,我为每个客户机创建一行

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));
        }

非常感谢。但我知道了错误的原因。这里的
数据
字段可以有空值,空值不是双精度的,空值也不是空值。