Проверка схемы: отсутствует таблица [SEQUENCE_NAME] при использовании стратегии генератора последовательности Hibernate - PullRequest
1 голос
/ 30 апреля 2019

У меня есть некоторые проблемы с генерацией идентификатора hibernate и сервером ms sql.

Я использую GenerationType.SEQUENCE в своем приложении для генерации идентификаторов с помощью hibernate.

@Id
@SequenceGenerator(name = "SequenceGenerator", sequenceName = "SEQUENCE_NAME")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceGenerator")
private Long id;

В качестве БД я использую Microsoft SQL Server 2017.

Я создаю последовательность с помощью Liquibase:

<createSequence incrementBy="50" sequenceName="SEQUENCE_NAME" startValue="100000"/>

При запуске Spring Boot Application я получаюошибка:

Schema-validation: missing table [SEQUENCE_NAME]

Когда я вручную запрашиваю последовательность, она может быть найдена:

SELECT COUNT(*) FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[SEQUENCE_NAME]') AND type = 'SO'

Я немного сбит с толку, что она говорит "отсутствует таблица ».С оракулом все нормально работает.Mssql не поддерживает генерацию идентификатора через последовательности.

Моя конфигурация:

spring:
  datasource:
    url: "jdbc:sqlserver://localhost:1433"
    username: sa
    password: ABc12345!
  jpa:
    properties:
      hibernate.dialect: org.hibernate.dialect.SQLServerDialect

Я использую этот образ докера: mcr.microsoft.com/mssql/server:2017-CU12-ubuntu

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Я использовал неправильный диалект в конфигурации. Правильный:

spring.jpa.properties.hibernate.dialect: org.hibernate.dialect.SQLServer2012Dialect

Другой предназначен для старых серверов, которые не поддерживают последовательности.

0 голосов
/ 30 апреля 2019

Попробуйте добавить default_schema в application.yml:

spring:
   jpa:
      properties:
         hibernate:
            default_schema: "dbo"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...