java - 休眠不允许按顺序递增 5
问题描述
我有以下数据库序列
CREATE SEQUENCE phonebook_id_seq INCREMENT BY 5;
select nextval('phonebook_id_seq'); // 1,6,11,....
爪哇
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "phoneSequenceGenerator")
@SequenceGenerator(name = "phoneSequenceGenerator", sequenceName = "phonebook_id_seq")
private Long id;
但是,使用 Hibernate 我收到以下错误消息,提示 hibernate 期望增加 50。为什么会这样?
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: sequence [phonebook_id_seq] defined inconsistent increment-size; found [5] but expecting [50]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:396)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1692)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
... 41 common frames omitted
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: sequence [phonebook_id_seq] defined inconsistent increment-size; found [5] but expecting [50]
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateSequence(AbstractSchemaValidator.java:191)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:100)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:68)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:191)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:313)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:452)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:889)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:384)
... 45 common frames omitted
Edit1 添加了 java 代码。
解决方案
错误信息非常清楚。您已启用(或未禁用)模式验证,因此当应用程序启动时,Hibernate 会将数据库与它对注释和/或配置的期望进行比较。该phonebook_id_seq
序列在数据库中以 5 的增量定义,但注释显示为 50(或什么也没说,默认值为 50)。更改注释以匹配数据库或更改序列或禁用验证。
我猜验证是spring.jpa.hibernate.ddl-auto=validate
基于标签启用的,但是如果没有看到你的代码,很难确定。
推荐阅读
- swift - 非沙盒应用程序中的沙盒策略错误
- node.js - 在浏览器 nodeJS 上收到错误请求错误
- ios - "Invariant Violation: Invalid hook call. hooks can only~~" 引入react-native-safe-area-context时报错
- java - 如何从android java中的SQLite表中删除所有数据
- c - C 程序在系统上按预期运行。但因 docker 上的 seg 错误而失败
- firebase - 如何使用 Firebase Firestore 在搜索中正确实施排名?
- bash - 如何使用 Zenity 加载图像?
- python - 如果我在目录中替换具有相同旧名称的文件,为什么 HTML 文件会显示旧图像?
- reactjs - React-Admin Filter+SearchInput 搜索时没有效果
- xcode - watchOS 多个构建目标:“任何 watchOS 设备”与“armv7k,arm64_32”