我正在使用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)
注意:我的应用程序是在不同计算机上的两台服务器上配置的。从一台机器我可以成功保存数据;但是从其他我得到了上面提到的例外。
答案 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)