hibernate 异常:could not get or update next value?????

YuZhejie 2009-01-17 03:22:32
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not get or update next value
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:41)
at org.hibernate.engine.transaction.Isolater$JdbcDelegate.delegateWork(Isolater.java:187)
at org.hibernate.engine.transaction.Isolater.doIsolatedWork(Isolater.java:43)
at org.hibernate.engine.TransactionHelper.doWorkInNewTransaction(TransactionHelper.java:51)
at org.hibernate.id.TableGenerator.generate(TableGenerator.java:94)
at org.hibernate.id.TableHiLoGenerator.generate(TableHiLoGenerator.java:62)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$1.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:431)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.save(Unknown Source)
at cn.com.tarena.ecport.dao.impl.ContactInfoDAOImpl.save(ContactInfoDAOImpl.java:115)
at cn.com.tarena.ecport.dao.impl.ContactInfoDAOImpl.save(ContactInfoDAOImpl.java:1)
at cn.com.tarena.ecport.biz.impl.UserBusinessImpl.saveContactInfo(UserBusinessImpl.java:79)
at cn.com.tarena.ecport.biz.test.TestReg.main(TestReg.java:50)
Caused by: java.sql.SQLException: Invalid table name "HIBERNATE_UNIQUE_KEY" specified at position 20.
at com.pointbase.net.netJDBCPrimitives.handleResponse(Unknown Source)
at com.pointbase.net.netJDBCPrimitives.handleJDBCObjectResponse(Unknown Source)
at com.pointbase.net.netJDBCConnection.prepareStatement(Unknown Source)
at org.hibernate.id.TableGenerator.doWorkInCurrentTransaction(TableGenerator.java:132)
at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:38)
... 39 more
...全文
672 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
YuZhejie 2009-01-17
  • 打赏
  • 举报
回复
....
YuZhejie 2009-01-17
  • 打赏
  • 举报
回复
我用的不是hilo啊。。。。

<id name="contactid" type="java.lang.Long">
<column name="CONTACTID" precision="20" scale="0" />
<generator class="identity">
</generator>
</id>
lihan6415151528 2009-01-17
  • 打赏
  • 举报
回复
错误篇2:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not get or update next value

分析:MyEclipse自动生成的hibernate.hbm.xml中的id配置是
<id name="id" type="integer" >
<column name="id"/>
<generator class="hilo" />
</id>

由于Hilo主键生成方式采用的是hilo算法,不必要指定id的(这点和assigned类似,主键的值由hibernate维护)。但hilo算法需要额外的数据表my_unique_key和字段next_hi(这个表名和字段名是默认的,都可修改),且next_hi必须有一条记录。

所以,在hibernate.hbm.xml中,id的配置要写成这样:
<id name="id" type="integer" column="id">
<generator class="hilo">
<param name="table">my_unique_key</param>
<param name="column">next_hi</param>
</generator>
</id>

补充:
表my_unique_key的示例:

next_hi
20

即20是初始的next_hi字段的值,并且next_hi_value在表my_unique_key中设为主键。
chengzhichao 2009-01-17
  • 打赏
  • 举报
回复
按照异常所说 可能是表名有问题,看一下是不是跟关键字冲突了,或者是不是违反了唯一键值的约束
YuZhejie 2009-01-17
  • 打赏
  • 举报
回复
等待。。。
YuZhejie 2009-01-17
  • 打赏
  • 举报
回复
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not get or update next value



Caused by: java.sql.SQLException: Invalid table name "HIBERNATE_UNIQUE_KEY" specified at position 20.



这个异常烦了我 两天了。。。一直都没能解决。。望老手指教。。。。

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧