首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Hibernate JPA列"NEXTVAL“

找不到Hibernate JPA列"NEXTVAL“
EN

Stack Overflow用户
提问于 2014-08-05 08:34:02
回答 1查看 1.4K关注 0票数 1

我们将JPA提供者从EclipseLink更改为Hibernate 4.1.3。使用生成的id试图持久化实体时出现问题。这会产生以下错误:

代码语言:javascript
复制
    JdbcSQLException: Column "NEXTVAL" not found; SQL statement: select nextval for SCHEMA.ID_SEQ_GENERATOR

实体的顺序如下所示:

代码语言:javascript
复制
    @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;
    }

我试着改变“策略=代类型. changing”,但没有效果。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-06 10:19:56

我发现,根据所使用的环境,使用不同的数据库。所使用的方言(当前)总是相同的,尽管它应该根据执行代码的服务器的不同而改变。(正确的方言实际上是先加载的,但随后会被替换,因为spring决定使用另一个带有@Configuration注解的类。我认为使用概要文件应该能让我克服这一点,尽管我仍然在使用这个.)

我找到了一个链接,它帮助我找到了正确的轨道:http://techmagik.blogspot.fi/2012/07/sequence-support-in-jpa-for-db2-zos.html.html

我发现使用了H2,于是将SQL更改为:

代码语言:javascript
复制
"NEXT VALUE FOR " + sequenceName
  • 修正了错误

因此,实际的问题是加载正确的方言(正如‘’暗示的那样)。方言用于DB2 (总是),而在某些情况下应该是H2。由于某些原因,当提供者被更改时,这个问题就会显现出来,因此很难跟踪正确的原因。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25134391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档