У всех сущностей есть Id, то есть как они работают - или, точнее, как указано в спецификации. Если в базе данных есть таблицы, которые вы хотите отобразить на объекты, и у таблиц нет первичного ключа, вам доступны несколько опций.
- Добавить сгенерированный Id (управляемый JPA или DB) в таблицу - рекомендуется, если у вас есть такая свобода.
- Используйте пару существующих столбцов в таблице в качестве идентификатора сущности (выбирая наименьшее число, необходимое для того, чтобы идентификатор стал уникальным).
- Используйте все столбцы, даже если есть теоретическая вероятность того, что их комбинация не будет уникальной (может испортить таблицу / базу данных, поэтому следует соблюдать осторожность даже в слоях Java, чтобы этого не произошло)
- ... может быть, есть и другие альтернативы, о которых я не могу думать сейчас
Должно быть довольно легко найти информацию о том, как сделать альтернативу 2 и 3 с помощью поиска JPA и CompositeKey.
Удачи