快速解决遇到hibernate的小问题
Nov 7
1.id 设置native自增报错?native需要数据库设置自增
id使用native自增,跑测试用例,抛异常
- org.hibernate.HibernateException: The database returned no natively generated identity value
2.单向一对多,抛出异常
User 表对应多个Address,配置User单项一对多,测试用例报错,详情如下:
xml 代码
- <class name="User" table="user">
-
- <id name="userId" type="integer" column="user_id">
- <generator class="native" />
- id>
-
- <bag name="userAddress" lazy="true" >
- <key column="user_id" >key>
- <one-to-many class="UserAddress">one-to-many>
- bag>
-
- class>
报错:UserAddress未保存
java 代码
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.hibernate.bean.user.UserAddress#123]
原因:没有设置级联更新,添加cascase='true',修改如下:
xml 代码
- <bag name="userAddress" lazy="true" cascade="all">
- <key column="user_id" >key>
- <one-to-many class="UserAddress">one-to-many>
- bag>
3.update一对多对象,报错:no session or session is close
UserAddress设置lazy=true
xml 代码
- <bag name="userAddress" lazy="true" cascade="all">
- <key column="user_id" >key>
- <one-to-many class="UserAddress">one-to-many>
- bag>
将UserAddress的list 赋值给 user, 保存user后,再次查询保存后User , 报错 no session or session is close
java 代码
- public boolean addUserAddress(int userid, UserAddress userAddress) {
-
- User user = (User) dao.findById(User.class, 123);
-
- List list = new ArrayList();
- list.add(userAddress);
-
- user.setUserAddress(list);
-
- dao.update(user);
- User user2 = (User) dao.findById(User.class, 123);
- }
java 代码
- org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.hibernate.bean.user.User.userAddress, no session or session was closed
看到 no session or session was close ,立即应该想到方法没有事务处理,延时加载UserAddress,必须在事务里面,不然怎么加载呢? 添加事务,以spring为例:
java 代码
- @Transactional
- public boolean addUserAddress(int userid, UserAddress userAddress) {
- }
分享到:
相关推荐
hibernate 常见异常非常不错的,hibernate 常见异常非常不错的
整理了hibernate常见的异常,有了此文档,开发中遇到的Hibernate异常调试更轻松
hibernate常见异常,hibernatejpa注解使用开发的解决方案
包含异常现象,说明,处理方法,主要为Java常见的异常,Hibernate常见异常等等
Hibernate 删除出现异常的解决方案.doc
hibernate异常文档.xls hibernate异常文档.xls
Hibernate映射导致的几个常见异常
由于Hibernate是基于 JDBC的,所以它的数据库查寻的能力相对于CMP来说也是异常强大的,Hibernate自身也提供了HQL查寻语句。 一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的...
chris-exception.jar 编译的异常处理jar包结合hibernate使用
在使用HIBERNATE是經常出現的一些錯誤!
一下午才整合成功,书中的bulidSessionFactory()方法在hibernate4.3.5中已经deprecated,这里面有方法实现,用完请给好评。
Hibernate5.1.fianl整合JPA注解方式异常:persistence.Table.indexes()[Ljavax/persistence/Index;
实体对象识别 PO与VO Hibernate持久化实现 数据加载方式 Ms-jdbc异常处理 参数绑定
11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...
hibernate4.3.8 自带demo
本文档是写的Java相关的异常及其处理办法 包括:Java、Jdbc、Android、JavaScript、Servlet、Jsp、Hibernate、Struts2中一般出现的异常及其解决办法,注明适用于初学者。
11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 ...
11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...
11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...