如何使用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可以自己重新创建这个表
- Jersey,Guice和Hibernate – EntityManager线程安全
- java.lang.IllegalArgumentException“无法使用Spring 4和Hibernate 4设置DAO字段”
- 线程“main”中的exceptionorg.hibernate.MappingException:未知实体
- 用于JPA回调的Hibernate事件侦听器
- 使用Java Hibernate进行会话管理
- 带有exists子句的hibernate条件
- 如何从org.hibernate.collection.PersistentBag中删除数据? | Hibernate(Jpa)
- hibernate SQLquery提取变量
- 如何将JPA中的自定义函数转换为谓词?