没有找到Hibernate JPA Column“NEXTVAL”

时间:2014-08-05 08:34:03

标签: java hibernate jpa

我们将JPA提供程序从EclipseLink更改为Hibernate 4.1.3。尝试使用生成的ID持久保存实体时出现问题。这会出现以下错误:

    JdbcSQLException: Column "NEXTVAL" not found; SQL statement: select nextval for SCHEMA.ID_SEQ_GENERATOR

实体的序列如下所示:

    @Id
    @SequenceGenerator(name = "ID_GENERATOR", initialValue = 100000, allocationSize = 1, sequenceName = "ID_SEQ_GENERATOR")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ID_GENERATOR")
    @Column(name = "ID", nullable = false)
    public Long getId() {
      return this.id;
    }

我尝试更改'strategy = GenerationType.IDENTITY',但它没有效果。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我发现根据使用的环境使用了不同的数据库。使用的方言(当前)总是相同的,即使它应该根据执行代码的服务器而改变。 (正确的方言实际上是首先加载的,但是它会被替换,因为spring决定使用另一个用@Configuration注释的类。我认为使用profile会让我超过这个,虽然仍在使用这个......)

我发现这个链接帮助我走上了正确的轨道: http://techmagik.blogspot.fi/2012/07/sequence-support-in-jpa-for-db2-zos.html.html

发现H2已被使用,我将SQL更改为:

"NEXT VALUE FOR " + sequenceName
  • 修正错误

所以实际的问题是加载正确的方言(因为' Luca Basso Ricci'暗示)。方言是针对DB2(总是),在某些情况下应该是针对H2的。出于某种原因,当提供者被更改时,这个问题就显现出来,因此跟踪正确的原因有点困难。