Hibernate не находит последовательность в нескольких базах данных одного и того же сервера, когда ddl-auto настроен на пJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Hibernate не находит последовательность в нескольких базах данных одного и того же сервера, когда ddl-auto настроен на п

Сообщение Anonymous »

Среда:
Версия Spring Boot: 3.2.1 с Hibernate-Core 6.4.1.Final
Также протестировано с версией 3.3.1 с Hibernate-Core 6.5.2.Final
База данных: MS SQL Server с несколькими доступными базами данных
Проблема :
У меня есть установка, в которой мне нужно сопоставить последовательность с полем @Id объекта с помощью аннотаций @GeneratedValue и @SequenceGenerator. Сама сущность сопоставляется с базой данных A (это представление), но последовательность, на которую она опирается, находится в базе данных B (которая также хранит таблицу). Я указываю параметры «каталог» и «схема» в аннотации @SequenceGenerator, чтобы указать правильное расположение последовательности в базе данных B.
Когда я настраиваю свой Spring Boot API с помощью Spring. jpa.hibernate.ddl-auto настроен на проверку, Hibernate выдает ошибку при запуске (из класса AbstractSchemaValidator), указывая, что он не может найти последовательность. Кажется, он запрашивает только INFORMATION_SCHEMA.SEQUENCES базы данных, для которой открыто соединение, а не проверяет все указанные каталоги в сопоставлениях объектов.
Переключение ddl-auto на none позволяет избежать этого. ошибка при запуске, и приложение работает нормально, последовательность правильно используется во время выполнения.
Ожидаемое поведение:
Hibernate должен правильно найти последовательность в базе данных B, если каталог и схема правильно указаны в аннотации @SequenceGenerator, даже если ddl-auto настроен на проверку.
Фактическое поведение:
Hibernate не может найти последовательность, если для ddl-auto не установлено значение none, что позволяет предположить, что он не полностью учитывает настройки каталога в средах с несколькими базами данных во время проверки схемы. Выдается сообщение об ошибке:

Проверка схемы: отсутствует последовательность ["B.schema_from_B.my_sequence"]

Пример кода:

@Getter
@Setter
@Entity
@Table(name = "my_view", schema = "schema_from_A", catalog = "A")
public class ViewEntity {

@Id
@GeneratedValue(strategy = SEQUENCE, generator = "my_seq_generator")
@SequenceGenerator(name = "my_seq_generator", catalog = "B", schema = "schema_from_B", sequenceName = "my_sequence")
@Column(name = "id")
private Integer id;

}

Конфигурация YML:
Вот фрагмент моей конфигурации

spring:
datasource:
url: jdbc:sqlserver://;databaseName=A;encrypt=true;trustServerCertificate=true
jpa:
properties:
hibernate:
default_catalog: A
default_schema: my_schema_A
hibernate:
ddl-auto: validate



Подробнее здесь: https://stackoverflow.com/questions/787 ... ver-when-d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»