SQL查询, 响应体临时字段报: Unknown column ‘data_json_map‘ in ‘field list‘

复制代码
    @Override
    public AjaxResult list(AgentPageReqVO pageReqVO, Integer pageNo, Integer pageSize) {
        // 1. 查询数据库获取代理列表
        List<AgentDO> list = agentMapper.selectPage(pageReqVO).getList();

        // 如果结果为空,直接返回空分页结果
        if (CollectionUtils.isEmpty(list)) {
            return PaginationUtil.manualPaging(list, pageNo, pageSize);
        }

        // 创建JSON解析器
        ObjectMapper mapper = new ObjectMapper();

        // 2. 处理列表中的每个AgentDO对象
        list.stream().map(agent -> {
            // 检查dataJson字段是否有值
            if (!StringUtils.isEmpty(agent.getDataJson())) {
                try {
                    // 3. 将JSON字符串解析为Map对象
                    Map<String, Object> objectMap = mapper.readValue(
                            agent.getDataJson(),
                            new TypeReference<Map<String, Object>>() {}
                    );
                    // 4. 将解析后的Map设置到dataJsonMap属性
                    agent.setDataJsonMap(objectMap);
                } catch (Exception e) {
                    // 解析失败时设置为null
                    agent.setDataJsonMap(null);
                }
            }
            return null; // 这里返回null是因为map操作需要返回值,但实际不需要
        }).collect(Collectors.toList()); // 触发流操作执行

        // 5. 手动分页并返回结果
        return PaginationUtil.manualPaging(list, pageNo, pageSize);
    }

    default PageResult<AgentDO> selectPage(AgentPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<AgentDO>()
                .eqIfPresent(AgentDO::getUserId, reqVO.getUserId())
                .eqIfPresent(AgentDO::getUserName, reqVO.getUserName())
                .eqIfPresent(AgentDO::getClzId, reqVO.getClzId())
                .likeIfPresent(AgentDO::getClzName, reqVO.getClzName())
                .eqIfPresent(AgentDO::getTitle, reqVO.getTitle())
                .eqIfPresent(AgentDO::getIntroduce, reqVO.getIntroduce())
                .eqIfPresent(AgentDO::getAvatar, reqVO.getAvatar())
                .eqIfPresent(AgentDO::getVisibleTenantIds, reqVO.getVisibleTenantIds())
                .eqIfPresent(AgentDO::getStatus, reqVO.getStatus())
                .eqIfPresent(AgentDO::getTemplateStatus, reqVO.getTemplateStatus())
                .eqIfPresent(AgentDO::getCreateWay, reqVO.getCreateWay())
                .eqIfPresent(AgentDO::getTop, reqVO.getTop())
                .eqIfPresent(AgentDO::getSort, reqVO.getSort())
                .eqIfPresent(AgentDO::getTemplateId, reqVO.getTemplateId())
                .eqIfPresent(AgentDO::getAppId, reqVO.getAppId())
                .eqIfPresent(AgentDO::getHint, reqVO.getHint())
                .eqIfPresent(AgentDO::getOpening, reqVO.getOpening())
                .eqIfPresent(AgentDO::getOpeningQuestion, reqVO.getOpeningQuestion())
                .eqIfPresent(AgentDO::getFollowup, reqVO.getFollowup())
                .eqIfPresent(AgentDO::getKnowledge, reqVO.getKnowledge())
                .eqIfPresent(AgentDO::getModel, reqVO.getModel())
                .eqIfPresent(AgentDO::getTool, reqVO.getTool())
                .eqIfPresent(AgentDO::getBackgroundImage, reqVO.getBackgroundImage())
                .eqIfPresent(AgentDO::getRoleCode, reqVO.getRoleCode())
                .eqIfPresent(AgentDO::getDeptId, reqVO.getDeptId())
                .likeIfPresent(AgentDO::getDeptName, reqVO.getDeptName())
                .betweenIfPresent(AgentDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(AgentDO::getTop)
                .orderByDesc(AgentDO::getSort)
                .orderByDesc(AgentDO::getCreateTime));
    }
复制代码
selectPage查询结果: 

Cause: java.sql.SQLSyntaxErrorException: Unknown column 'data_json_map' in 'field list'

问题分析与解决方案

问题原因

AgentDO 实体类中定义了 dataJsonMap 字段,它是一个临时字段用于存储解析后的 JSON 数据,不需要持久化到数据库。但在 SQL 查询中自动包含了这个字段,导致数据库报错 Unknown column 'data_json_map'

解决方案

方法一:使用 @TableField(exist = false) 注解

AgentDO 类中,为 dataJsonMap 字段添加注解,明确表示它不是数据库字段:

复制代码
@TableField(exist = false)  // 表示这不是数据库字段
private Map<String, Object> dataJsonMap;

OK

复制代码
{
    "msg": "操作成功",
    "code": 0,
    "data": {
        "total": 4,
        "list": [
            {
                "createTime": 1747803847000,
                "updateTime": 1747803847000,
                "creator": "1",
                "updater": "1",
                "deleted": false,
                "id": 12,
                "userId": 1,
                "userName": "admin",
                "clzId": null,
                "clzName": null,
                "title": "天气预报",
                "introduce": "我是天气预报的好帮手",
                "avatar": null,
                "visibleTenantIds": "[]",
                "status": 1,
                "templateStatus": 1,
                "createWay": null,
                "top": 0,
                "sort": 0,
                "templateId": "cd50493b-3222-4665-a08f-363595df4b35",
                "appId": "f64c6f9e-b21c-4b46-abc2-64cf3cdef9b9",
                "hint": null,
                "opening": null,
                "openingQuestion": null,
                "followup": null,
                "knowledge": null,
                "model": null,
                "tool": null,
                "backgroundImage": null,
                "roleCode": null,
                "deptId": 103,
                "deptName": "研发部门",
                "tenantId": 1,
                "tenantName": "企业租户",
                "scope": 1,
                "dataJsonMap": {
                    "pre_prompt": "string",
                    "opening_statement": "string",
                    "suggested_questions": [
                        "string"
                    ],
                    "suggested_questions_after_answer": {
                        "enabled": true
                    },
                    "dataset_configs": {
                        "datasets": {
                            "datasets": [
                                {
                                    "dataset": {
                                        "enabled": true,
                                        "id": "0828c38c-05e6-4b18-b065-d1a89d1dfdd2"
                                    }
                                }
                            ]
                        },
                        "reranking_enable": true,
                        "reranking_mode": "string",
                        "reranking_model": {
                            "reranking_model_name": "string",
                            "reranking_provider_name": "string"
                        },
                        "retrieval_model": "string",
                        "top_k": 0
                    },
                    "model": {
                        "completion_params": {
                            "stop": [

                            ]
                        },
                        "mode": "string",
                        "name": "string",
                        "provider": "string"
                    },
                    "agent_mode": {
                        "enabled": true,
                        "max_iteration": 0,
                        "prompt": "string",
                        "strategy": "string",
                        "tools": [
                            {
                                "enabled": true,
                                "notAuthor": true,
                                "provider_id": "string",
                                "provider_name": "string",
                                "provider_type": "string",
                                "tool_label": "string",
                                "tool_name": "string",
                                "tool_parameters": {
                                    "prompt": "string",
                                    "timestamp": "string",
                                    "traceId": "string"
                                }
                            }
                        ]
                    },
                    "background_image": "string"
                }
            }
        ]
    }
}

一线网资源-全网一站式平台

相关推荐
缺点内向3 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅3 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看4 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t5 小时前
ZIP工具类
java·zip
lang201509285 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan6 小时前
第10章 Maven
java·maven
百锦再6 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说7 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多7 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring