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