hibernate遇到的几个问题

今天的问题和解决方案汇总:

1.因为表中有一些字段是有默认值的,那么一定要在映射文件中配置dynamic-insert="true" 。否则,save的时候会报错,因为一些字段没有赋值。配置了动态插入之后,hibernate可以通过有值的属性字段来动态的插入,而不是所有字段都插入。

一定要注意的是:<property>配置的数据库可以插入默认值的字段,一定不能加not-null="true" ,否则动态插入失败!

 

2.  关于dynamic-update="true"  动态更新,目前用的版本是hibernate3.2,并没有实现这个功能。所以如果用session.update(obj)去更新会报错,因为一些字段不允许为空。也就是生成的SQL语句是更新每一个字段的。解决方案有两个:

   a)先用get查询出要修改的对象,在这个对象的基础之上去做update

   b)用query方式做update

 

3. 在做delete的时候,如果用 session.delete(int id)的方式可以成功删除,但如果采用query的方式报错误:java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I

上网搜索了一下原因:myEclipse中自带的struts的架包中的antlr-2.7.2这个版本,但hibernate3.2中的版本是antlr-2.7.6,导致冲突。删掉2.7.2这个版本,运行通过。

 

posted on 2012-11-10 23:27  <安之若素>  阅读(149)  评论(0编辑  收藏  举报

导航