org.hibernate.HibernateException:数据库未返回本机生成的标识值

时间:2011-08-24 08:39:17

标签: java mysql hibernate

我从Hibernate

获得此异常
  

建筑会议工厂
  13:32:09,937 INFO SessionFactoryObjectFactory:105 - 未将工厂绑定到JNDI,未配置JNDI名称
  线程“main”中的异常org.hibernate.HibernateException:数据库没有返回本机生成的标识值

这是什么意思,我该如何解决?谢谢!

6 个答案:

答案 0 :(得分:43)

我认为这意味着您正在尝试将IDENTITY ID生成器与未正确配置的表列一起使用。它应该是IDENTITY生成器的auto_increment列才能工作。否则,数据库不会返回任何生成的ID。

答案 1 :(得分:5)

我们必须使用以下查询

auto_increment表格的id
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

答案 2 :(得分:3)

修复此问题非常简单,只需确保您正在使用的表的主键列已设置自动增量。

答案 3 :(得分:2)

在数据库中创建表时,您可能忘记将Autoincrement添加到该特定列。

或者

您忘记在Java类中注释"生成值"

这样可以正常使用

答案 4 :(得分:0)

解决此问题的另一种方法是为表格的ID列设置Auto_Increment

答案 5 :(得分:0)

在这种情况下,您无需手动创建表。它将默认使用hibernate创建。 更改或添加hibernate.cfg.xml>> “hibernate.hbm2ddl.auto”字段设置为“update”。