架构验证:使用 Hibernate 序列生成器策略时缺少 table [SEQUENCE_NAME]
Schema-validation: missing table [SEQUENCE_NAME] when using Hibernate Sequence Generator Strategy
我在生成休眠 ID 和 MS sql 服务器时遇到一些问题。
我在我的应用程序中使用 GenerationType.SEQUENCE
通过休眠生成 ID。
@Id
@SequenceGenerator(name = "SequenceGenerator", sequenceName = "SEQUENCE_NAME")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceGenerator")
private Long id;
作为数据库,我使用 Microsoft sql 服务器 2017。
我通过 Liquibase 创建序列:
<createSequence incrementBy="50" sequenceName="SEQUENCE_NAME" startValue="100000"/>
启动 Spring 引导应用程序时出现错误:
Schema-validation: missing table [SEQUENCE_NAME]
当我手动查询序列时可以发现:
SELECT COUNT(*) FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[SEQUENCE_NAME]') AND type = 'SO'
我有点困惑,它说 "missing table"。使用甲骨文它工作正常。 mssql 不支持通过序列生成id吗
我的配置:
spring:
datasource:
url: "jdbc:sqlserver://localhost:1433"
username: sa
password: ABc12345!
jpa:
properties:
hibernate.dialect: org.hibernate.dialect.SQLServerDialect
我使用这张 docker 图片:mcr.microsoft.com/mssql/server:2017-CU12-ubuntu
尝试将 default_schema
添加到 application.yml:
spring:
jpa:
properties:
hibernate:
default_schema: "dbo"
我在配置中使用了错误的方言。
正确的是:
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.SQLServer2012Dialect
另一个适用于不支持序列的旧服务器。
我在生成休眠 ID 和 MS sql 服务器时遇到一些问题。
我在我的应用程序中使用 GenerationType.SEQUENCE
通过休眠生成 ID。
@Id
@SequenceGenerator(name = "SequenceGenerator", sequenceName = "SEQUENCE_NAME")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceGenerator")
private Long id;
作为数据库,我使用 Microsoft sql 服务器 2017。
我通过 Liquibase 创建序列:
<createSequence incrementBy="50" sequenceName="SEQUENCE_NAME" startValue="100000"/>
启动 Spring 引导应用程序时出现错误:
Schema-validation: missing table [SEQUENCE_NAME]
当我手动查询序列时可以发现:
SELECT COUNT(*) FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[SEQUENCE_NAME]') AND type = 'SO'
我有点困惑,它说 "missing table"。使用甲骨文它工作正常。 mssql 不支持通过序列生成id吗
我的配置:
spring:
datasource:
url: "jdbc:sqlserver://localhost:1433"
username: sa
password: ABc12345!
jpa:
properties:
hibernate.dialect: org.hibernate.dialect.SQLServerDialect
我使用这张 docker 图片:mcr.microsoft.com/mssql/server:2017-CU12-ubuntu
尝试将 default_schema
添加到 application.yml:
spring:
jpa:
properties:
hibernate:
default_schema: "dbo"
我在配置中使用了错误的方言。 正确的是:
spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.SQLServer2012Dialect
另一个适用于不支持序列的旧服务器。