Spring 遇到对数据库序列[hibernate_sequence]的多个引用

Spring 遇到对数据库序列[hibernate_sequence]的多个引用,spring,hibernate,jpa,spring-boot,Spring,Hibernate,Jpa,Spring Boot,我在构建JHipster应用程序时遇到以下错误: org.springframework.beans.factory.BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]:调用init方法失败;嵌套异常为org.hibernate.Hibernat

我在构建JHipster应用程序时遇到以下错误:

org.springframework.beans.factory.BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]:调用init方法失败;嵌套异常为org.hibernate.HibernateException:试图为“增量大小”设置冲突值时,遇到对数据库序列[hibernate_sequence]的多个引用。找到[1]和[50]

我看到了50,但我不知道1是从哪里来的

自从上次工作以来,我添加了一些在Kotlin文件中定义的新实体


我正在努力将as one功能添加到我的应用程序中。演示自行构建并运行,没有任何问题。为了达到现在的水平,我将演示中的代码复制到我的应用程序中,并调整了一些内容,主要与用户实体有关。因为JHipster不允许向用户添加字段,所以我创建了一个与它有1:1关系的Author实体。这本身可能与这个错误无关。我认为这段新代码中一定有东西试图创建一个序列,默认的增量大小是一个。

您可能缺少一些必需的标记,因为JHipster对项目设置做了很多假设。这是使我的项目正常运行所必需的:

@Entity
@Table(name = "tags")
public class Tag {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
  @SequenceGenerator(name = "sequenceGenerator")
  private int id;
}

标准hibernate允许您在不指定策略或生成器的情况下离开,但由于它已配置,您需要进行匹配。

问题是您的sequence generator注释没有指定sequenceName,因此它在数据库中使用commonhibernate\u sequence序列。序列有其增量,您显然试图指定不同的

因此,即使您为表指定了序列生成器,它实际上也与其他生成器共享,“1”来自此hibernate_序列


只要试着命名您的序列,使其在数据库中有自己的实体,您就可以使用任何增量大小

我也有同样的问题,一些实体有:

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;
而其他一些实体:

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;
我将项目中的所有实体都更改为第一种类型,即AUTO,并去掉了带有@Id的抽象类DomainEntityBase,这就解决了这个问题。
另外,我正在使用jhipster。

使用不同于“hibernate_sequence”的名称在数据库中创建一个新序列,然后在@SequenceGenerator中使用该序列,并指定创建序列的架构的名称。例如,如果您以这种方式定义了架构:

CREATE SEQUENCE wallet.wallet_sequence
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
那么您的实体注释应该如下所示:

@身份证 @GeneratedValue(策略=GenerationType.SEQUENCE,generator=“hibernate_seq”) @SequenceGenerator(name=“hibernate\u seq”,sequenceName=“wallet\u sequence”,schema=“wallet”)