分类: Hibernate预览模式: 普通 | 列表
在借助hibernate[1] 执行更新操作,包括插入(insert)/修改(update)/删除(delete)操作的过程中,如果数据库一方返回的update count 与 hibernate 所预期的 count[2] 不同,那么hibernate 的Batcher 就会抛出异常:

HibernateException("SQL insert, update or delete failed (row not found)");

下面是一段完整的错误信息:

[ERRor][tcpConnection-8080-3] - Could not synchronize database state with session
org.springframework.orm.hibernate.HibernateSystemException: SQL insert, update or delete failed (row not found); nested exception is net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)

查看更多...

Tags: row not found failed update

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1228
08-03
11

无法将 NULL 值插入列 'id',表 XX;该列不允许空值

无法将 NULL 值插入列 'id',表 'order_new.dbo.News';该列不允许空值。
这个错误归根结底是来自于Hibernate的映射文件中的ID配置;解决办法:
1.把映射文件中id配置由identity换成increment
2.或者把数据库设置为id主键,且自增

查看更多...

Tags: NULL 空值

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1823
08-01
29

Hibernate通用分页

Jpage分页—struts+hibernate的通用分页程序本文源自昨夜风网站(www.zuoyefeng.com)名声显赫而招摇的数据持久层框架Hibernate,通过query.setFirstResult和query.setMaxResult来实现了对数据的分页,这个分页的实质在SqlServer中是TOP N的方法,Oracle是rownum<n方法。即直接通过SQL语句,来得到当前页所需的数据。

但是,Hibernate分页,并不能得到页脚,所以尚不通用。承接Jpage分页的方便性,写了这版分页,以方便已与群众。

下面,就是在Hibernate下的通用分页,属于Jpage分页的第三项功能。思路是定义一个Dao类,让其它数据库的dao都继承这个Dao类。

Dao类源文件:
package com.xdf.dao;

查看更多...

Tags: 分页 pager

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1111
       用MS SQL2000遇到这样的问题了,我所采用的ms sql的驱动是官方的.在网上查了一下,感觉说得零零散散,模模糊糊,有错有对.真是鱼龙混杂,感觉像进了市场买菜.......我尽我的掌握和有限的水平综合起来总结一下:

        这个问题的原因是只要表里有Blob或者Clob两个当中的一种或者这两个字段都存在,并且采用MS SQL官方的驱动.就会产生这个错误!并且查看了很多资料,很多总结都指出这种错误仅MS SQL2000才会出现.

     网上总结的微软驱动的缺点及解决方案:    数据库表:TChannle

(1)如果采用jdbc-odbc驱动,那么就必须按照查询顺序来一次读取(不论有没有image或text类型)
(2)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,不存在image或text类型字段,那么可以按照无序获取
(3)如果采用微软提供的ms sql server jdbc driver,如果查询语句中,存在image或text类型字段,那么就必须按照顺序读取,否则就会报告Driver]ResultSet can not re-read row data for column之类的错误

查看更多...

Tags: ResultSet re-read row data COLUMN text

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 945
08-01
19

Hibernate性能优化策略

有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的 Hibernate的效率低于直接JDBC存取,然而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当满意的,特别是应用二级缓存之 后,甚至可以获得比较不使用缓存的JDBC更好的性能,下面介绍一些通常的Hibernate的优化策略:
    1.抓取优化
    抓取是指Hibernate如何在关联关系之间进行导航的时候,Hibernate如何获取关联对象的策略,其主要定义了两个方面:如何抓取和何时抓取
    1)如何抓取。
    Hibernate3主要有两种种抓取方式,分别应用于对象关联实例(many-to-one、one-to-one)和对象关联集合(set、map等),总共是四种变种
    JOIN抓取: 通过在Select语句中使用OUTER JOIN来获得对象的关联实例或者关联集合)
    Select抓取: 另外发送一条Select语句来抓取当前对象的关联实体和集合
    在我的开发经历中,此处对性能的优化是比较有限的,并不值得过多关注
    例:

查看更多...

Tags: 性能 优化 性能优化

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 675
还是做Many-to-One的时候遇见的错误,级联检索不允许。

试验了一下发现了几个解决方法:
1、是把对应一对多的那两个列lazy=true改为lazy=false即可
2、对于查询中如果用的是xxx.load(class,id)则改为xxx,get(class,id)
3在web.xml文件中加入

<filter>
  <filter-name>hibernateFilter</filter-name>

查看更多...

分类:Hibernate | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1018