jpa websphere идентификатор объекта несуществующие ошибки
Добрый вечер. Когда я пытаюсь создать объекты jpa, используя соединение с базой данных, я получаю некоторые исключения. Что-то об id не существует. Я подозреваю, что это как-то связано с тем, что некоторые таблицы не имеют первичного ключа. Потому что, когда я прохожу каждую сущность и даю ей первичный ключ, ошибка очищается. Как я могу создавать сущности на таблицах, которые не имеют первичных ключей? Я использую WebSphere Integration Developer (WID), кстати.
1 ответ
У всех сущностей есть Id, то есть, как они работают, или, точнее, в спецификации. Если в базе данных есть таблицы, которые вы хотите отобразить на сущности, и у таблиц нет первичного ключа, вам доступны несколько опций.
- Добавьте сгенерированный идентификатор (управляемый JPA или DB) в таблицу - рекомендуется, если у вас есть такая свобода.
- Используйте пару существующих столбцов в таблице в качестве идентификатора объекта (выбирая наименьшее число, необходимое для того, чтобы идентификатор стал уникальным).
- Используйте все столбцы, даже если есть теоретическая вероятность того, что их комбинация не будет уникальной (может испортить таблицу / базу данных, поэтому следует соблюдать осторожность даже в слоях Java, чтобы этого не произошло)
- ... может быть больше альтернатив, о которых я не могу думать прямо сейчас
Должно быть довольно легко найти информацию о том, как сделать альтернативу 2 и 3 с помощью поиска JPA и CompositeKey.
Удачи