You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新建角色时出现javax.persistence.EntityNotFoundException异常如何解决

异常排查与解决方案

实体定义侧排查

  • 校验Roles实体的主键生成策略:确认@GeneratedValue配置和数据库表主键的生成规则匹配,使用GenerationType.IDENTITY时必须开启表主键自增,使用序列策略时必须确认数据库存在对应序列且权限配置正确。
  • 移除Roles实体上的@Where、@Filter等软删除过滤注解临时测试,如果异常消失,说明是插入后查询触发了过滤规则,需调整全局查询过滤的生效范围。
  • 检查所有关联字段的@ManyToOne、@OneToOne配置,若存在optional = false的配置,插入前需校验关联实体是否真实存在,JPA在校验关联存在性时会抛出本异常而非关联实体不存在的提示。

业务逻辑侧排查

  • 确认保存方法全程在事务内运行,无手动回滚、异常捕获后未回滚的问题:事务未提交前执行getReference()查询未flush的实体,会直接抛出EntityNotFoundException,临时将查询方法替换为find()可验证该问题。
  • 排查是否存在全局插入监听器、拦截器在插入后修改了实体的主键值:JPA会使用插入前生成的主键做后续查询,主键被修改会导致查询不到对应记录。
  • 检查保存逻辑中是否存在先删除同主键记录、再插入新记录的操作:操作间隔过短会导致JPA缓存和数据库状态不一致,触发查询时抛出异常。

基础设施侧排查

  • 确认角色表无插入后修改主键的触发器:触发器修改主键会导致JPA缓存的主键和数据库实际值不匹配。
  • 若使用读写分离架构,确认保存后的查询操作强制走主库:主从同步延迟会导致从库暂时查不到刚插入的记录。

内容的提问来源于stack exchange,提问作者Axel Bauduin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:57:01