数据库未返回本机生成的标识值

时间:2011-11-14 07:50:34

标签: java hibernate spring-mvc db2 websphere

我正在使用IBM DB2 V 9.1.0.356。我正在使用DB2 JDBC驱动程序版本9.7。

我正在将这些技术用于我的应用程序。

Spring MVC,Hibernate,DB2,Websphere

在我的创建表脚本中; ID列生成为:

ID BIGINT GENERATED BY DEFAULT AS IDENTITY

在Java Entity类中,它配置为:

@Id 
@GeneratedValue(strategy = GenerationType.AUTO)
@Column( name = "id", nullable = false  )

当我通过hibernate调用它来保存和反对时:

*.save(persistentObject);

保存数据。但是我得到了以下例外:

org.hibernate.HibernateException: The database returned no natively generated identity value
at org.hibernate.id.IdentifierGeneratorFactory.getGeneratedIdentity(IdentifierGeneratorFactory.java:90)

注意:我的应用程序是在不同计算机上的两台服务器上配置的。从一台机器我可以成功保存数据;但是从其他我得到了上面提到的例外。

3 个答案:

答案 0 :(得分:1)

虽然它们都连接到同一个数据库,但它在一个WebSphere服务器上工作并在另一个WebSphere服务器上失败,这表明JDBC驱动程序的版本存在问题。我先检查一下。

答案 1 :(得分:0)

如果@id带注释的属性映射列不支持自动生成id,也会发生上述异常。

@GeneratedValue(strategy = GenerationType.AUTO)
使用

Use @GeneratedValue(strategy = GenerationType.IDENTITY)

可能会解决问题。

答案 2 :(得分:0)

确保在创建表ID字段时应将其标记为自动增量,然后使用

@GeneratedValue(strategy = GenerationType.IDENTITY)