JavaEE 之 JPA 常见异常处理办法汇总

Java EE在进行JPA 管理数据库中经常会有些比较常见的异常,当时会记得,但总有遗漏疏忽,特地记录下来并不断更新,以方便快速确定问题。

注:在当前karaf 4.x版本中,hibernate可以使用jpa 2.1 ,openjpa 2.4只支持到2.0,且对依赖存在更多要求。

类型描述
异常信息could not initialize proxy - no Session at xxxxxx
问题根源使用了延迟加载策略。当jpa的entityManager将事务关闭(session无效),此时再访问被设定为延迟加载的数据,就会发生该问题。

解决办法:
1、访问延迟加载数据的代码必须与之前代码放在一个事务范围中(比如使用OpenSessionInViewFilter);
2、关闭延迟加载设定;
解决此问题更多需要考虑架构设计,在多层次后台设计中,在薄薄的springmvc层一般是不能设定事务处理的

类型描述
异常信息java.lang.NoSuchMethodError:javax.persistence.Table.indexes()
问题根源在使用Hibernate4.3.6时遇到,说是hibernate处理注解的一个bug。有时间单独验证下

解决办法:
1、升级hibernate或换用openjpa等等(我建议)
2、按照下述改造注解(不建议,注解本身没有问题)
@Entity
@Table(name=”table_name”)
改成
@Entity(name=”table_name”)

类型描述
异常信息osgi环境中 基于hibernate的JPA操作无效,但是没有任何异常被捕获
问题根源数据库连接确认无问题后,交替使用hibernate和openjpa测试,检查Import Package

一定要检查Import Package设定,即使能够被正确加载也未必正确,最简单的办法是用hibernate.hbm2ddl.auto检验是否能够创建数据表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值