hibernate 一些bug的分析

本文详细分析了使用 Hibernate 过程中遇到的各种错误,包括类型匹配错误、参数绑定错误、主键赋值问题、数据库关键词冲突等,并提供了相应的解决办法。建议升级 Hibernate 版本到 3.2.6 或更高以减少 bug。还探讨了 Hibernate 中 session.load() 和 session.get() 的区别,以及批量插入数据时需要注意的事务和缓存管理问题。
摘要由CSDN通过智能技术生成
 hibernate 错误分析
错误1:
 代码:
  Peopletable people=(Peopletable)session.load(Peopletable.class,"2");
  在hibernate3.1版中报的错误是:
  org.hibernate.exception.SQLGrammarException: could not insert: [net.gaoxin.Computertable]
  在hibernate3.2.6中报的错误是:
  Exception in thread "main" org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class
java.lang.Integer, got class java.lang.String
  看来3.2版比3.1版更人性化,提示信息更明确。
  解决:
  Peopletable people=(Peopletable)session.load(Peopletable.class,new java.lang.Integer(2));
  后面的参数类型换成Integer/int的就可以了。
     看来后面一个变量的类型是int的。
 错误2:
 版本:hibernate-3.1
 代码:
     Peopletable people=(Peopletable)session.load(Peopletable.class,"2");
     computer.setPeople(people);
     session.save(computer);//错误行
 错误:
    Hibernate: insert into computertable (cmodel, people) values (?, ?) select scope_identity()
    16:34:17,953  INFO IntegerType:89 - could not bind value '2' to parameter: 2
    16:34:17,953  WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: 07009
    16:34:17,984 ERROR JDBCExceptionReporter:72 - [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
    Exception in thread "main" org.hiber
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值