Как объявить класс @Entity для таблицы оракула без ПК?
Отображение ROWID как Id
не поддерживается стандартным JPA, и я не смог найти очевидных доказательств того, что EclipseLink предоставляет расширение для этого (я нашел только это сообщение ).
Но это не единственный вариант, и в викибуке JPA есть хороший параграф об этой ситуации:
Иногда у вашего объекта или таблицы нет
основной ключ. Лучшее решение в этом
случай обычно добавить сгенерированный идентификатор
к объекту и столу. Если вы этого не сделаете
есть эта опция, иногда есть
столбец или набор столбцов в таблице
которые составляют уникальную ценность. Вы можете
использовать этот уникальный набор столбцов в качестве вашего
идентификатор в JPA. JPA Id
не имеет
всегда должны соответствовать базе данных
таблицы первичного ключа, а также
первичный ключ или уникальное ограничение
требуется.
Если на вашем столе действительно нет уникального
столбцы, затем используйте все столбцы
как идентификатор Как правило, когда это происходит
данные доступны только для чтения, поэтому даже если
таблица позволяет дублировать строки с
те же значения, объекты будут
так или иначе, так что это не имеет значения
что JPA думает, что они одинаковы
объект. Проблема с разрешением
обновляет и удаляет то что есть
нет способа однозначно идентифицировать
строка объекта, так что все соответствующие
строки будут обновлены или удалены.
Если у вашего объекта нет идентификатора,
но его таблица делает, это хорошо.
Сделай объект и Embeddable
объект, встраиваемые объекты не имеют
Идентификаторы. Вам понадобится Entity
, что
содержит это Embeddable
для сохранения
и запросить его.