如何使用Hibernate插入新项目?

我有一个名为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() ,则新任务不会插入到db中。

我究竟做错了什么?

编辑: session.save(task)也不起作用

在此链接的帮助下工作: http : //www.coderanch.com/t/487173/ORM/databases/hibernate-sequence-exist

显然,hibernate会查找用于生成id的序列表。 设置以下内容:

 @GeneratedValue(strategy = GenerationType.IDENTITY) 

在id上,使它使用底层db的自动增量而不是尝试生成id本身,现在它可以正常工作。

如果其他人正在努力解决这个错误,我通过删除修复它

 true 

来自hibernate属性。

我不小心删除了我的数据库中的hibernate_sequence表。 更改:

 spring.jpa.hibernate.ddl-auto=none 

 spring.jpa.hibernate.ddl-auto=create 

在你的application.properties文件中,所以Hibernate可以自己重新创建这个表