java - 如何使用 Hibernate 插入新项目?

标签 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)

在下面的代码中:

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) 也不起作用

最佳答案

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

显然,hibernate 会寻找序列表来生成 id。设置以下内容:

@GeneratedValue(strategy = GenerationType.IDENTITY)

在 id 上,使其使用底层数据库的自动增量而不是尝试自己生成 id,现在它可以工作了。

关于java - 如何使用 Hibernate 插入新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22472292/

相关文章:

java - 终止Web应用程序中的java线程

php - 数据库 |分面搜索已更改

java - hibernate 多用户,动态变化

java - 没有 [org.hibernate.SessionFactory] ​​类型的合格 bean

java - 尝试使用 String.split ("\\?"时出现意外行为)

java - Selenium 、Java 和 Angular : Element not interactable

java - 堆栈跟踪警告 "No bean factory"

MySQL 和 Windows Vista : How to setup replication?

php - 添加到数据库时出现奇怪的 mySQL 错误

java - org.postgresql.util.PSQLException : Error: column systementi0_. id 不存在 - Hibernate、PostgreSql