JavaEE 之 JPA 常见异常处理办法汇总
2016-01-22 13:58
489 查看
Java EE在进行JPA 管理数据库中经常会有些比较常见的异常,当时会记得,但总有遗漏疏忽,特地记录下来并不断更新,以方便快速确定问题。
注:在当前karaf 4.x版本中,hibernate可以使用jpa 2.1 ,openjpa 2.4只支持到2.0,且对依赖存在更多要求。
解决办法:
1、访问延迟加载数据的代码必须与之前代码放在一个事务范围中(比如使用OpenSessionInViewFilter);
2、关闭延迟加载设定;
解决此问题更多需要考虑架构设计,在多层次后台设计中,在薄薄的springmvc层一般是不能设定事务处理的
解决办法:
1、升级hibernate或换用openjpa等等(我建议)
2、按照下述改造注解(不建议,注解本身没有问题)
@Entity
@Table(name=”table_name”)
改成
@Entity(name=”table_name”)
一定要检查Import Package设定,即使能够被正确加载也未必正确,最简单的办法是用hibernate.hbm2ddl.auto检验是否能够创建数据表
注:在当前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 |
相关文章推荐
- 关于struts2的那点事
- static关键字--java
- Vector and ArrayList in Java
- Java 方法
- 手动编译JAVA类
- JavaSE001_String类总结之构造器和常用方法
- android studio 导入eclipse遇到的相关问题
- java ftp相关的异常汇总
- Spring+MVC项目发布停止
- java前台传参json,后台用map或者实体对象接收
- java.lang.RuntimeException: JPedal Trial has now expired
- java 实现多线程的三种基本方式
- 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题
- JAVA注解
- eclipse中安装mybatis快捷进入插件
- 浅析Java中的深拷贝和浅拷
- java多线程并发概览
- Struts2常用的常量配置
- Java 编程要点之并发(Concurrency)详解
- SpringMVC学习笔记