`

hibernate使用小异常

阅读更多

快速解决遇到hibernate的小问题

Nov 7

 1.id 设置native自增报错?native需要数据库设置自增

id使用native自增,跑测试用例,抛异常

  1. org.hibernate.HibernateException: The database returned no natively generated identity value   

 

 2.单向一对多,抛出异常

User  表对应多个Address,配置User单项一对多,测试用例报错,详情如下:

xml 代码
  1. <class name="User" table="user">  
  2.   
  3.     <id name="userId" type="integer" column="user_id">  
  4.          <generator class="native" />      
  5.     id>  
  6.   
  7.     <bag name="userAddress" lazy="true" >  
  8.         <key column="user_id" >key>  
  9.         <one-to-many class="UserAddress">one-to-many>  
  10.     bag>  
  11.   
  12. class>  

报错:UserAddress未保存 

java 代码
  1. org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.hibernate.bean.user.UserAddress#123]  

原因:没有设置级联更新,添加cascase='true',修改如下:

xml 代码
  1. <bag name="userAddress" lazy="true" cascade="all"><!---->      
  2.     <key column="user_id" >key>      
  3.     <one-to-many class="UserAddress">one-to-many>      
  4. bag>    

  

3.update一对多对象,报错:no session or session is close

UserAddress设置lazy=true

xml 代码
  1. <bag name="userAddress" lazy="true" cascade="all"><!---->  
  2.     <key column="user_id" >key>  
  3.     <one-to-many class="UserAddress">one-to-many>  
  4. bag>  

将UserAddress的list 赋值给 user, 保存user后,再次查询保存后User , 报错 no session or session is close

java 代码
  1. public boolean addUserAddress(int userid, UserAddress userAddress) {   
  2.   
  3.     User user = (User) dao.findById(User.class123);   
  4.   
  5.     List list = new ArrayList();   
  6.     list.add(userAddress);   
  7.        
  8.     user.setUserAddress(list);   
  9.   
  10.     dao.update(user);   
  11.     User user2 = (User) dao.findById(User.class, 123);
  12. }  
java 代码
  1. 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 代码
  1. @Transactional  
  2. public boolean addUserAddress(int userid, UserAddress userAddress) {   
  3. }  

 

分享到:
评论
1 楼 yuan_2004 2008-10-25  
一对多,查询.cascade="all" 就可以了.多谢

相关推荐

    hibernate 常见异常

    本文将深入探讨Hibernate常见的异常,以及与之相关的依赖库。 首先,我们看到的`java.lang.NoClassDefFoundError`是一个典型的运行时异常,表示在类加载时找不到对应的类定义。这通常意味着在编译时存在所需的类,...

    hibernate常见异常

    Hibernate 常见异常处理 Hibernate 是一个流行的 Java 持久层框架,但是在实际开发中,我们经常会遇到各种异常。...通过了解这些异常的原因和解决方案,我们可以更好地使用 Hibernate,提高开发效率和质量。

    Eclipse上使用Hibernate

    您需要将 hibernate3.jar 添加到项目中,同时也需要将 Hibernate 的 lib 文件夹下的所有文件添加到项目中,以免出现 ClassNotDef 的异常。 配置 Hibernate 在配置 Hibernate 之前,您需要在项目中添加 Oracle 的 ...

    Hibernate3使用经验

    ### Hibernate3 使用经验 #### 一、在 Hibernate 中配置参数 在 Hibernate 框架中,我们可以使用两种方法来配置参数: 1. **根据参数名称设置参数**:这是较为直观的一种方式,它允许我们直接通过参数名来进行...

    Hibernate Validator 小例子

    在本小例子中,我们将学习如何使用 Hibernate Validator 来实现常见的验证场景,并自定义错误信息。 **使用环境** 本示例项目采用 Gradle 作为构建工具,这意味着你可以通过编写 Gradle 配置文件来管理项目的依赖...

    Hibernate使用Tomcat连接池.doc

    在测试和调试过程中,如果遇到问题,如JDBC驱动异常,应先检查Tomcat的连接池配置是否正确,然后再检查Hibernate的配置。如果在没有Hibernate的情况下,直接通过JNDI获取连接能正常工作,那么问题可能出在Hibernate...

    Java常见异常集-Java,Hibernate,Tomcat异常

    在Java编程中,异常处理是不可或缺的一部分,尤其是在开发复杂的企业级应用时,如使用Hibernate进行对象关系映射和Tomcat作为应用服务器。本篇将详细解释一些常见的Java、Hibernate以及与Tomcat相关的异常,帮助...

    Hibernate,hibernate笔记

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许...理解和熟练使用Hibernate配置、异常处理、HQL查询以及IDE集成是每个Java开发者必备的技能。通过上述步骤,你可以更好地了解和应用Hibernate进行数据库操作。

    Hibernate映射导致的几个异常

    标题与描述概述的知识点主要集中在Hibernate映射过程中可能遇到的各种异常情况,这涉及到数据库与对象模型之间的映射问题,以及Hibernate...理解和掌握这些异常的原因及其解决方法对于高效使用Hibernate框架至关重要。

    hibernate异常文档.xls

    hibernate异常文档.xls hibernate异常文档.xls

    hibernate aip hibernate aip

    Hibernate AIP,全称为Hibernate Application Integration Process,是Java开发领域中使用Hibernate框架进行应用程序集成的一种实践过程。Hibernate作为一款强大的对象关系映射(ORM)工具,极大地简化了Java应用...

    Hibernate 删除出现异常的解决方案.doc

    在使用Hibernate进行数据库操作时,有时会遇到一种异常情况,即在尝试删除一个对象时,系统抛出"deleted object would be re-saved by cascade (remove deleted object from associations)"的异常。这个异常通常发生...

    Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G的演示代码

    总之,这个压缩包文件提供的内容对于学习如何在Myeclipse 10.0环境下使用Hibernate 4.3.5与Oracle 11G交互非常有价值,特别是对那些正在学习或迁移至新版本Hibernate的开发者。通过研究这个项目,你可以了解到ORM...

    Hibernate的小例子

    标题"Hibernate的小例子"表明我们将探讨的是关于Hibernate的初级示例,这通常涉及到数据库操作和对象关系映射(ORM)的基本概念。Hibernate是一个流行的Java ORM框架,它简化了Java应用程序与数据库之间的交互。 ...

    Java_Jdbc_Hibernate_Struts2_Android_Web异常及其处理办法

    【Hibernate异常处理】 Hibernate是一个流行的ORM(对象关系映射)框架,允许开发者使用面向对象的方式来操作数据库。在使用Hibernate时,可能会遇到`HibernateException`,这通常表示与数据持久化有关的问题。处理...

    hibernate常見錯誤

    在配置Hibernate映射文件时出现问题,例如示例中的`Hibernate-mapping`标签使用不正确。 **原因分析:** 1. **标签拼写错误:**`Hibernate-mapping`标签应为`hibernate-mapping`。 2. **DTD声明错误:**`&lt;!DOCTYPE...

    hibernate使用c3p0连接池的资料

    ### hibernate使用c3p0连接池的知识点详解 #### 一、Hibernate与C3P0连接池概述 - **Hibernate**: 是一个全功能的Java持久层框架,它提供了对象关系映射(ORM)功能,使得Java应用可以方便地与数据库进行交互。...

    在Java SE中使用Hibernate处理数据

    在Java SE环境中使用Hibernate处理数据是一项常见的任务,尤其是在开发企业级应用时,需要对数据库进行高效、灵活的管理和操作。Hibernate作为一个流行的Object-Relational Mapping(ORM)框架,能够简化Java程序员...

    Hibernate实践例子程序

    由于Hibernate是基于 JDBC的,所以它的数据库查寻的能力相对于CMP来说也是异常强大的,Hibernate自身也提供了HQL查寻语句。 一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的...

    Spring+Hibernate StringIndexOutOfBoundsException String index out解决方法

    在使用 Spring 和 Hibernate 进行开发时,可能会遇到 StringIndexOutOfBoundsException 异常,这个异常的出现是由于 Hibernate 的映射文件和数据库中表的字段不一致所导致的。在本文中,我们将详细介绍这个异常的...

Global site tag (gtag.js) - Google Analytics