当前位置: 首页 > news >正文

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产生影响。

http://www.lryc.cn/news/312082.html

相关文章:

  • Dockerfile的艺术:构建高效容器镜像的指令详解与实战指南
  • 软件开发项目管理中各角色职责介绍
  • 将时间转换为 `刚刚`、`几秒前`、`几分钟前`、`几小时前`、`几天前`、几月前或按照传入格式显示
  • Oracle存储过程干货(二):PLSQL控制语句
  • 深入Gradle:初识构建自动化的魅力
  • cpp版ros2、opencv转换
  • 使用API接口竞品价格监控
  • Redis的BitMap的使用
  • 视频号带货究竟怎么做?老阳分享的项目怎么样?
  • AI智能分析网关V4智慧环保/智慧垃圾站视频智能分析与监控方案
  • vxe-table编辑单元格动态插槽slot的使用
  • 2024新鲜出炉阿里巴巴面试真题,如果不想35岁被淘汰这篇文章必看
  • 设计模式(含7大原则)面试题
  • claude3科普
  • 2024中国·北京预制菜产业博览会
  • 【Vue】vue3 在图片上渲染 OCR 识别后的文本框、可复制文本组件
  • Linux系统运维脚本:批量创建linux用户和密码(读取文件中的账号和密码来批量创建用户)
  • 重力坝廊道量水堰计与堰板安装技术指南
  • ButterKnife实现之Android注解处理器使用教程
  • 【哈希】Leetcode 128. 最长连续序列 【中等】
  • 回溯是怎么回事(算法村第十八关青铜挑战)
  • 向爬虫而生---Redis 探究篇5<Redis集群刨根问底(1)>
  • 系统集成Prometheus+Grafana
  • 实例驱动计算机网络
  • Unity 报错:SSL CA certificate error
  • 算法刷题Day1 | 704.二分查找、27.移除元素
  • 大数据技术学习笔记(五)—— MapReduce(2)
  • 北斗导航 | 同步双星故障的BDS/GPS接收机自主完好性监测算法
  • 2024金三银四必看前端面试题!简答版精品!
  • Python-sklearn.datasets-make_blobs