`
杜崇明
  • 浏览: 6824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Hibernate常见异常

阅读更多

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

不注意的话,还真的有点无所适从,Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。

java.lang.NoClassDefFoundError: antlr/ANTLRException


开始没有注意到这个,只看下面的详细情况.结果调试了两天还是不行.没办法,搜索了一下antlr/ANTLRException,结果发现是少了antlr-2.7.5H3.jar包

 

使用Hibernate3.2 以上版本的注解映射,需导入以下jar包: 织梦好,好织梦
1. ejb3-persistence.jar
2. hibernate-annotations.jar
3. hibernate-commons-annotations.jar
4. hibernate-core.jar
如果和Spring 整合,那么需要另外导入一个jar包(spring.jar)。
注意:
此spring.jar必须是 Spring2.5以上版本的,因为,Spring2.5之前org.springframework.orm.hibernate3.LocalSessionFactoryBean类中,并没有 packageToScan 这个属性,只有mappingResuorces这个属性。而packageToScan这个属性正是映射包中的类,而mappingResuorces只是映射某个文件。

com.test.po
这样,即可完成映射。

在使用 Hiberante注解映射和Spring整合过程中可能遇到的异常:
如出现java.lang.NoClassDefFoundError: org/dom4j/ ,导入dom4j.jar包即可
如出现java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory , 需要导入以下四个jar包(1: slf4j-api-1.4.3.jar、2:slf4j-jdk14-1.4.3.jar、3:slf4j-log4j12-1.4.3.jar、4:log4j-over-slf4j-1.4.3.jar) 即可
如出现java.lang.NoClassDefFoundError: javax/transaction/TransactionManager , 需要导入 jta.jar包
java.lang.ClassNotFoundException: antlr.ANTLRException 则需要导入ant.jar包
org.springframework.util.Assert.noNullElements([Ljava/lang/Object;Ljava/lang/String;)V Invalid property 'packagesToScan' of bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean]: Bean property 'packagesToScan' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 这是由于,spring.jar包的版本不符,把spring.jar换成Spring 2.5以上版本即可
6. java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V jar包冲突,删除asm-2.2.3.jar 即可

 

ids for this class must be manually assigned before calling save()

oracle:

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "ID", unique = true, nullable = false, length = 50)
public String getId() {
    return this.id;
}

id最好是自动生成:
如果是配置Hbm文件,可以加入<generator class="assigned"></generator>
如果是注解:@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() {
return id;
}


 hibernate   +MySQL 5中,出现错误提示:
Field 'id' doesn't have a default value
解决方法
打开my.ini(my-template.ini),查找
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改为
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

 

Spring与Hibernate整合getHibernateTemplate().delete(object)删除不了数据


Spring 还是没有封装 Hibernate 的删除、插入时事物的开启 和提交..
找了资料我去hibernate.cfg.xml 添加了一句
<property name="connection.autocommit">true</property>

 

Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition 错误解决

错误代码:
  org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition 
错误原因:
  OpenSessionInViewFilter在getSession的时候,会把获取回来的session的flush mode 设为FlushMode.NEVER。然后把该sessionFactory绑定到TransactionSynchronizationManager,使request的整个过程都使用同一个session,在请求过后再接除该sessionFactory的绑定,最后closeSessionIfNecessary根据该session是否已和transaction绑定来决定是否关闭session。在这个过程中,若HibernateTemplate 发现自当前session有不是readOnly的transaction,就会获取到FlushMode.AUTO Session,使方法拥有写权限。
也即是,如果有不是readOnly的transaction就可以由Flush.NEVER转为Flush.AUTO,拥有insert,update,delete操作权限,如果没有transaction,并且没有另外人为地设flush model的话,则doFilter的整个过程都是Flush.NEVER。所以受transaction保护的方法有写权限,没受保护的则没有。
参考文章:
  http://calvin.blog.javascud.org/post/46.htm
解决办法:
  采用spring的事务声明,使方法受transaction控制
<bean id="baseTransaction" 
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
          abstract="true"> 
        <property name="transactionManager" ref="transactionManager"/> 
        <property name="proxyTargetClass" value="true"/> 
        <property name="transactionAttributes"> 
            <props> 
                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> 
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> 
                <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop> 
                <prop key="save*">PROPAGATION_REQUIRED</prop> 
                <prop key="add*">PROPAGATION_REQUIRED</prop> 
                <prop key="update*">PROPAGATION_REQUIRED</prop> 
                <prop key="remove*">PROPAGATION_REQUIRED</prop> 
            </props> 
        </property> 
    </bean> 
    <bean id="userService" parent="baseTransaction"> 
        <property name="target"> 
            <bean class="com.phopesoft.security.service.impl.UserServiceImpl"/> 
        </property> 
    </bean> 

分享到:
评论

相关推荐

    hibernate 常见异常

    hibernate 常见异常非常不错的,hibernate 常见异常非常不错的

    hibernate常见异常针对于jpa

    hibernate常见异常,hibernatejpa注解使用开发的解决方案

    hibernate常见异常

    整理了hibernate常见的异常,有了此文档,开发中遇到的Hibernate异常调试更轻松

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

    包含异常现象,说明,处理方法,主要为Java常见的异常,Hibernate常见异常等等

    java开发常见错误异常

    html标签的常见错误,mysql常见错误异常,oracle常见错误异常,连接池异常,maven常见异常,hibernate常见异常,struts2常见异常等.

    Hibernate映射导致的几个异常

    Hibernate映射导致的几个常见异常

    Hibernate+中文文档

    11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查...

    hibernate3.2中文文档(chm格式)

    11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...

    HibernateAPI中文版.chm

    11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...

    Hibernate中文详细学习文档

    11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查...

    Hibernate 中文 html 帮助文档

    11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application...

    最全Hibernate 参考文档

    11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking...

    hibernate 体系结构与配置 参考文档(html)

    异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱管对象...

    Hibernate教程

    12.1.4. 常见问题 12.2. 数据库事务声明 12.2.1. 非托管环境 12.2.2. 使用JTA 12.2.3. 异常处理 12.3. 乐观并发控制(Optimistic concurrency control) 12.3.1. 应用程序级别的版本检查(Application version ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking) 11.3.2. 扩展周期的session和自动版本化 11.3.3. 脱...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    2.4 目前市场上常见的轻量级J2EE开发容器 2.5 小结 第二篇 建立和使用J2EE的开发平台 第三章 建立Java的开发平台 3.1 建立Java的开发环境 3.1.1 下载JDK 3.1.2 安装JDK 3.1.3 设定Path、Classpath和JAVA_HOME 3.2 ...

    hibernate3.04中文文档.chm

    12.1.4. 常见问题 12.2. 数据库事务声明 12.2.1. 非托管环境 12.2.2. 使用JTA 12.2.3. 异常处理 12.3. 乐观并发控制(Optimistic concurrency control) 12.3.1. 应用程序级别的版本检查(Application version ...

    Hibernate3+中文参考文档

    11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.3. 乐观并发控制(Optimistic concurrency control) 11.3.1. 应用程序级别的版本检查(Application version checking...

Global site tag (gtag.js) - Google Analytics