hibernate - Criteria Builder:如何为 JSON_OBJECT 使用标签
问题描述
我有一个要求,需要在运行时使用标准构建器创建 jsonobject。让我知道如何实现同样的目标。我使用 Mysql 作为数据库。
预期的sql: select project_id, json_arrayagg(json_object('name', project_name, 'description', description)) from user_projects group by project_id
到目前为止的代码..
CriteriaQuery<Tuple> criteriaQuery = cBuilder.createTupleQuery();
Root<UserProjects> userProjectsRoot = criteriaQuery.from(UserProjects.class);
// NOT SURE HOW TO INSERT LABELS i.e., 'name' and 'description' in json_object function..
criteriaQuery.multiselect(userProjectsRoot.get("projectId").alias("Id"),
cBuilder.function("json_arrayagg", String.class,
cBuilder.function("json_object", String.class,
userProjectsRoot.get("projectName"),
userProjectsRoot.get("description"))).alias("json"));
criteriaQuery.groupBy(userProjectsRoot.get("projectId"));
Any help would be appreciated.
解决方案
显然,在您的 SQL 中,标签只是字符串文字,因此也只需在此处使用字符串文字。
criteriaQuery.multiselect(userProjectsRoot.get("projectId").alias("Id"),
cBuilder.function("json_arrayagg", String.class,
cBuilder.function("json_object", String.class,
cBuilder.literal("name"), userProjectsRoot.get("projectName"),
cBuilder.literal("description"), userProjectsRoot.get("description"))).alias("json"));
推荐阅读
- python - 如何读取、写入和列出谷歌存储桶中的文件夹和文件?
- solr - 加载类“solr.CurrencyFieldType”时出错
- python-asyncio - 相当于 Python 的“async def”函数中的“yield”
- google-cloud-firestore - Firestore 规则模拟器是否考虑了现有文档的实际集合?
- android - 使用动态变化的字段序列化传入的 JSON
- python - 如何打乱隐式对数组?
- storage - Openstack Hypervisor 本地存储增加大小
- regex - 逐行读取文件并替换字符串,打印到文件
- javascript - 从数据库加载时无法解析 ace 编辑器中的 javascript 标签
- apache-spark - 如何在 OLP 中覆盖 spark conf