【发布时间】:2014-04-23 17:11:37
【问题描述】:
我有一个名为Task 的实体类,它在hibernate 中映射。
我能够正确获取属于此类的现有项目,因此我认为这不是该类映射的问题。
但是,当我尝试插入新项目时,出现以下错误:
org.hibernate.exception.SQLGrammarException: error performing isolated work
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
at org.hibernate.engine.transaction.internal.jdbc.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:96)
at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:131)
at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:58)
at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:422)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:680)
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:672)
在以下代码中:
Task t = new Task();
t.title = "foo";
t.comment = "bar";
//snip... (every single field of task is given some value, except for id)
session.saveOrUpdate("Task", t); //This is the line on which the exception occurs
如果我不执行saveOrUpdate(),则新任务不会插入到数据库中。
我做错了什么?
编辑:session.save(task) 也不起作用
【问题讨论】:
-
@Youngistan 我看不到插入或更新 sql,它在抛出异常之前显示的最后一个查询是:
Hibernate: select next_val as id_val from hibernate_sequence for update -
你可以试试 session.save(t);
-
@Youngistan 刚试过,还是一样的错误
-
谁能确认
public long id = 0;id 是否被允许? -
@SubirKumarSao 我已将其更改为
public long id,但它没有任何效果。