[ 系统异常 ]nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one resul

本文介绍了一种常见的MyBatis使用过程中遇到的问题——TooManyResultsException,并提供了解决方案。该异常通常发生在预期返回一条记录的情况下却返回了多条记录。通过调整查询逻辑和返回类型,可以有效避免此类异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后台数据查询接口的书写出错

报错内容:

[ 系统异常 ]nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2

查询语句查出多条数据,但是返回的类型只能是一条

解决方案(改后代码):


/**ReportServiceImpl.java*/
@Override
public List<Report> findReportById(Integer id) {

    List<Report> report = reportMapper.findReportById(id);

    return report;
}
/**ReportController.java*/
@GetMapping("find_report_by_id")
public JsonData findReportById(Integer id){

    List<Report> report = reportService.findReportById(id);

    return JsonData.buildSuccess(report);

}
/**ReportMapper.java*/
List<Report> findReportById(@Param("id") Integer id);
/**ReportService*/
List<Report> findReportById(@Param("id") Integer id);

 

### 插件调用错误(PluginInvokeError)中的键错误(KeyError) 在处理 `PluginInvokeError` 类型的 `KeyError` 时,通常是因为尝试访问字典或其他映射对象中不存在的键所引发的异常。以下是对此问题的具体分析以及可能的解决方案。 #### 可能的原因 1. **配置文件缺失或不匹配** 如果正在加载的模型配置文件中缺少特定的关键字段(如 `'llama'`),则会触发 `KeyError` 异常。这可能是由于模型权重与配置文件之间的版本不一致引起的[^1]。 2. **多进程环境下的参数传递失败** 在分布式训练或多进程中,如果某个子进程未能正确接收到所需的元数据,则可能会抛出类似的 `KeyError` 错误。例如,在 PyTorch 的多线程环境中,某些变量未被正确定义或初始化可能导致此问题[^2]。 3. **外部插件接口定义不清** 当使用第三方库或者自定义开发的功能模块作为插件集成到项目里时,如果没有严格遵循其 API 文档说明来设置必要的输入参数,也可能造成此类运行期错误。 #### 解决方案建议 针对上述提到的各种可能性提供相应的修复措施: - #### 验证并修正配置项 确认当前使用的 LLaMA 和 Vicuna Delta 权重对应的 AutoConfig 是否支持指定名称 (`'llama'`) 。如果不是官方维护的标准结构化形式之一,则需手动更新至最新版 HuggingFace Transformers 库后再试一次操作。 ```python try: config = AutoConfig.from_pretrained('path/to/model', trust_remote_code=True) except KeyError as e: print(f"The key {e} does not exist in your model's configuration.") ``` - #### 调整数据预处理逻辑 对于批量大小(`batch_size`)或者其他动态变化的学习率等超参控制机制而言,应该先检查原始 JSON/YAML 文件是否存在对应条目再继续后续计算流程;另外还可以考虑引入默认值填补空白区域以增强鲁棒性[^2]。 ```json { ... "default_gen_lr": 0.0001, ... } ``` 修改后的 Python 实现片段如下所示: ```python import json def safe_get(dct, keys_list, default=None): """Safely retrieve nested dictionary values.""" value = dct.copy() for k in keys_list[:-1]: if isinstance(value.get(k), dict): value = value[k] else: break final_key = keys_list[-1] return value.get(final_key, default) # Example usage within training loop setup phase. gen_lr_path = ['metadata', 'gen_lr'] metadata = extract_metadata(curriculum, step_count=discriminator.step) learning_rate = safe_get(metadata, gen_lr_path, fallback_value=config.default_gen_lr) optimizer.param_groups[0]['lr'] = learning_rate ``` - #### 数据源一致性校验 若涉及 Excel 表格解析场景下发生类似现象,则重点排查目标工作簿内部布局设计是否合理合规——即各 Sheet 名称及其内容排列顺序均满足预期需求[^3]。必要情况下可借助 Pandas 提供的相关工具函数完成初步清理作业。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值