JPA常见异常 JPA可能抛出的异常

1、**EntityNotFoundException(**实体不存在异常 **):**通过 JPA 查找一个不存在的实体。

2、NonUniqueResultException (非唯一结果异常): 查询返回了多个结果,但期望只有一个结果。

3、TransactionRequiredException (需要事务支持的异常)

表示在执行一个需要在事务中进行的操作时,但当前没有活动的事务。这通常发生在没有事务管理的环境中,或者在执行需要事务的操作时没有启动事务。

具体案例:

一个简单的服务类,执行了需要在事务中进行的数据库更新操作。

4、Spring Data Jpa抛出异常:NonUniqueObjectException

框架使用的SpringBoot,首先谈论一下Jpa、Spring Data Jpa、Hibernate三者的关系:

  • JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范,注意不是ORM框架------因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现。
  • Hibernate是JPA规范的完整实现。并已获得Sun的兼容认证。
  • Spring Data JPA是Spring官方在JPA规范的基础下,只提供了Repository层的实现。

因此,SpringBoot中的ORM框架也是有Hibernate的。这个异常就是Hibernate抛出的。

熟悉Hibernate的应该会知道它的缓存。

如果用户试图将同一个Java类的两个不同实例与一个特定标识符(在一个Session范围内)关联,就会发生这种情况。将抛出NonUniqueObjectException异常,其实也就是出现主键不唯一的意思。

所以要在主键id上添加注解@GeneratedValue(strategy = GenerationType.IDENTITY),就是告诉它这个主键会由数据库自动生成。因此在缓存中会给每个实例添加一个标识,用以区分所有的实例,在提交给数据库后并不会对主键id产生影响。

相关推荐
刚入门的大一新生12 分钟前
Linux-线程互斥
java·开发语言
kingx337 分钟前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固
赵小哥要冲啦44 分钟前
社区邻里互助小程序从 0 到 1 复盘:需求拆解与信任机制设计
java·小程序·需求分析
xiaogai_gai1 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉
二哈赛车手1 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
ZWZhangYu1 小时前
从 Dify 实践理解大模型上下文缓存
java·后端·spring
小羊没烦恼!2 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡
AlickLbc2 小时前
DM-V8数据库证书过期处理过程记录
数据库
l1t2 小时前
DeepSeek总结的五分钟测试:Ted Dunning 谈 DuckDB 为何让分析更轻松
数据库·sql·duckdb
超级新零售2 小时前
零售 SaaS 与本地部署,技术责任边界究竟怎么分?
数据库·零售