(1) 今天在用hibernate向数据库插入数据的时候,出现了下面的错误:
一:duplicate key value violates unique constraint "xxxx主键";
二:Could not synchronize database state with session。
三:org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update。
这是个什么原因啊!查了下。原来是数据库里面的数据被手动的添加,修改了。而sequence的当前值却没有相应的改变。当然不能更新数据了。改变下sequence当前值就ok了。我用的postgreSQL可以直接修改,这个改变sequence的值得sql语句我也记不得了,用到的时候在搜吧!
几点疑问:
一:是数据库还是hibernate来管理这个sequence的,sequence是如何被管理的。
二:为什么手动添加数据,sequence的值没有进行相应的改变。
三:在hibernate里面,sequence和相应的对象是如何关联起来的。
(2) Hibernate 异常org.hibernate.LazyInitializationException: could not ini...
错误页面提示
could not initialize proxy - no Session
控制台
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
病症:这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。
在hibernate3中,所有的实体设置文件(user.hbm.xml)中的lazy属性都被默认设成了true,就是当这个类没有被调用时,延时加载,导致了以上情况的发生,在配置文件中将lzay属性设为false就可以了。
----------------------------------------------------------------
原因:
<may-to-one>or<one-to-may>的lazy属性默认为:lazy = "proxy"
解决:<many-to-one> & <set> 中设置 lazy="false"
一:duplicate key value violates unique constraint "xxxx主键";
二:Could not synchronize database state with session。
三:org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update。
这是个什么原因啊!查了下。原来是数据库里面的数据被手动的添加,修改了。而sequence的当前值却没有相应的改变。当然不能更新数据了。改变下sequence当前值就ok了。我用的postgreSQL可以直接修改,这个改变sequence的值得sql语句我也记不得了,用到的时候在搜吧!
几点疑问:
一:是数据库还是hibernate来管理这个sequence的,sequence是如何被管理的。
二:为什么手动添加数据,sequence的值没有进行相应的改变。
三:在hibernate里面,sequence和相应的对象是如何关联起来的。
(2) Hibernate 异常org.hibernate.LazyInitializationException: could not ini...
错误页面提示
could not initialize proxy - no Session
控制台
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
病症:这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。
在hibernate3中,所有的实体设置文件(user.hbm.xml)中的lazy属性都被默认设成了true,就是当这个类没有被调用时,延时加载,导致了以上情况的发生,在配置文件中将lzay属性设为false就可以了。
----------------------------------------------------------------
原因:
<may-to-one>or<one-to-may>的lazy属性默认为:lazy = "proxy"
解决:<many-to-one> & <set> 中设置 lazy="false"