#java #hibernate #exception
#java #гибернация #исключение
Вопрос:
У меня есть две таблицы, обе с именами Language в двух разных схемах, давайте назовем их schema1 и schema2.
Когда я аннотирую модели для каждой из этих таблиц, мой код выглядит следующим образом: @Entity @Table(name=»language», catalog =»schema1″) Язык открытого класса {
.....................
@Entity
@Table(name="language", catalog="schema2")
public class Language {
Но при этом я получаю ошибку исключения аннотации следующим образом:
org.hibernate.Исключение AnnotationException: использование одного и того же имени объекта дважды: язык
Итак, означает ли это, что я не могу иметь таблицы с одинаковыми именами в двух разных схемах базы данных или я просто неправильно аннотирую свои модели?
Спасибо,
Эллиотт
Комментарии:
1. Вы пытались использовать атрибут схемы аннотации таблицы вместо каталога?
Ответ №1:
У меня была такая же проблема в сложной структуре классов, и приведенный выше ответ — это просто обходной путь. Вы можете определить аннотацию @Entity с помощью переменной name, чтобы отличать два класса друг от друга. Пример:
Класс 1:
@Entity(name="language_v1")
@Table(name="language", catalog="schema1")
public class Language {
Класс 2:
@Entity(name="language_v2")
@Table(name="language", catalog="schema2")
public class Language {
Это позволит вам сохранить структуру вашего класса.
Ответ №2:
Оказывается, что модель в схеме 2 была объектом, который был расширением объекта модели в схеме 1. Hibernate не нравится такая конструкция, когда две таблицы называются одинаково. Создание второго объекта, не являющегося расширением первого, устранило проблему.