a different object with the same identifier value was already associated withthe session异常解决方案
异常信息:
org.hibernate.NonUniqueObjectException
发生原因:
在对一个实体查询操作后,进行了set,然后又要对这个实体进行save/update,
报错的例子:
//Service层 public void modifyPersonalizedSettings(PersonalizedSettings ps,Integer userId)throws Exception { User user = personalizedSettingsDAO.selectUserById(userId); ps.setUser(user); personalizedSettingsDAO.updatePersonalizedSettings(ps); }
//DAO层 public void updatePersonalizedSettings(PersonalizedSettings ps) throws Exception { System.out.println(ps+"DAO"); template.merge(ps); }
解决方案:
最简单的就是不用save()方法,改用merge()方法。
例子:
//Service层 public void modifyPersonalizedSettings(PersonalizedSettings ps,Integer userId)throws Exception { User user = personalizedSettingsDAO.selectUserById(userId); ps.setUser(user); personalizedSettingsDAO.updatePersonalizedSettings(ps); }
//DAO层 public void updatePersonalizedSettings(PersonalizedSettings ps) throws Exception { System.out.println(ps+"DAO"); //template.update(ps)不再使用update()方法,改用merge()方法即可 template.merge(ps); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
· WPF 引用 ASP.NET Core 的 AOT 版本
· 通过 Canvas 将后端发来的一帧帧图片渲染成“视频”的实现过程
· 当加密ID需要变成Guid:为什么我选择了AES-CBC而非GCM?
· 基于 epoll 的协程调度器——零基础深入浅出 C++20 协程
· 下划线字段在golang结构体中的应用
· 我的AI自学路线,可能对你有用
· WPF 引用 ASP.NET Core 的 AOT 版本
· 纯 C#实现+AOT 打造的智能PDF目录提取工具 PdfTocExtractor
· C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-下篇)
· 深入理解 C# 异步编程:同步、Task.Wait () 与 await 的本质区别及实践指南