Cli*_*ote 11 java mysql 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)
Run Code Online (Sandbox Code Playgroud)
在以下代码中:
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
Run Code Online (Sandbox Code Playgroud)
如果我不这样做saveOrUpdate()
,那么新任务不会插入到数据库中.
我究竟做错了什么?
编辑:session.save(task)
也不起作用
Cli*_*ote 36
在此链接的帮助下工作:http://www.coderanch.com/t/487173/ORM/databases/hibernate-sequence-exist
显然,hibernate会查找用于生成id的序列表.设置以下内容:
@GeneratedValue(strategy = GenerationType.IDENTITY)
Run Code Online (Sandbox Code Playgroud)
在id上,使它使用底层db的自动增量而不是尝试生成id本身,现在它可以正常工作.
小智 5
我不小心删除了数据库中的 hibernate_sequence 表。改变:
spring.jpa.hibernate.ddl-auto=none
Run Code Online (Sandbox Code Playgroud)
到
spring.jpa.hibernate.ddl-auto=create
Run Code Online (Sandbox Code Playgroud)
在你的 application.properties 文件中,以便 Hibernate 可以自己重新创建这个表
归档时间: |
|
查看次数: |
18045 次 |
最近记录: |