Как исправить следующую ошибку Hibernate:
Что означает «Использование одного и того же имени объекта дважды».
Как исправить следующую ошибку Hibernate:
Что означает «Использование одного и того же имени объекта дважды».
Это исключение возникает, когда у вас есть более одного @Entity с одним и тем же именем класса или явным именем. Чтобы решить эту проблему, вы должны установить разные явные имена для каждой сущности.
Пример ошибки:
package A;
@Entity
class Cell{
...
}
package B;
@Entity
class Cell{
...
}
Пример решения: пакет А;
@Entity(name="a.Cell")
class Cell{
...
}
package B;
@Entity(name="b.Cell")
class Cell{
...
}
Итак, чтобы использовать их в HQL, вы должны написать
...createQuery("from a.Cell")...
Я сталкивался с этой ошибкой несколько раз. Причины были следующие:
Другая распространенная ошибка заключается в том, что вы недавно переместили один из ваших классов сохраняемости (из одного пакета в другой), но ваша IDE не смогла должным образом очистить ваши файлы .class.
Или некоторые файлы .class все еще висят на вашем сервере приложений.
Недавно у меня возникла эта ошибка (дубликат импорта): два объекта с одинаковым именем «MyEntity», но из разных пакетов/модулей: com.test1.MyEntity com.test2.MyEntity
Я не использовал их, но они были загружены спящим режимом в jboss. Мне не разрешалось изменять сущности, поэтому мне пришлось прибегнуть к обходному пути.
<property name="hibernate.auto-import" value="false"/>
в файл persistence.xml. Это предотвратило создание повторяющегося исключения при развертывании на jboss. Но при вызове моего запроса было выбрано исключение.entityManager.createQuery("Select a.Name, b.name from AEntity a,
BEntity b where a.ID = b.parentID")
Это некрасиво, но это обходной путь.
Я думаю, это означает, что вы объявили одну и ту же сущность более чем в одном файле конфигурации.
Без дополнительной информации я бы попробовал закомментировать фрагменты вашего файла конфигурации, чтобы вы не видели ошибку, а затем медленно добавлять разделы обратно, пока не столкнетесь с ошибкой?
Если это всего лишь несколько файлов конфигурации, то почему бы не разместить их здесь? При публикации, если вы добавите 4 пробела в начало вашего XML, это будет:
<xml>nicely formatted</xml>
Надеюсь это поможет.
Одной из наиболее распространенных ошибок, которые вы можете совершить, чтобы вызвать эту ошибку, является попытка сохранить два разных класса Java в таблицах с одинаковыми именами. Hibernate любит, чтобы в каждой таблице был только один тип вещей (с некоторыми исключениями для подклассов и т.п.), и поэтому, если вы должны были создать класс с именем, возможно, StudentRecord и класс с именем MusicRecords, и если вы затем сказали Hibernate сохранить оба этих классов в таблицу под названием «записи», вы можете создать такое исключение. С этой конкретной формулировкой я подозреваю, что вы используете аннотации (в этом случае еще проще случайно назвать две таблицы, описанные в двух разных классах Java, одним и тем же).
Надеюсь это поможет! (хотя, возможно, нет, поскольку я только что заметил, что вы задали этот вопрос 7 месяцев назад. Я надеюсь, что вы еще не застряли, сэр!)