Идентификатор Hibernate Annotations для таблицы без первичного ключа

У меня есть таблица без первичного ключа, и ее также нельзя создать. Я могу создать уникальный ключ, используя три столбца этой таблицы. Теперь спящий режим требует идентификатор для каждого аннотированного класса, как мне удовлетворить этот идентификатор уникальным идентификатором, который я могу создать.


person Aadi Droid    schedule 28.06.2012    source источник


Ответы (1)


Если это тип сущности то вы должны использовать составной ключ. Это можно сделать, переместив поля первичного ключа в отдельный класс и сопоставив их в классе сущностей с аннотацией @Id.

См. Сопоставление составных первичных ключей и внешних ключей с составными первичными ключами< /а>

Если это не сущность, а тип значения, вы должны сопоставить его соответствующим образом. См. https://stackoverflow.com/a/1696146/324900 и Типы объектов и значений в спящем режиме

person Reddy    schedule 28.06.2012
comment
Да, ты можешь. Но вы сказали, что у вас нет первичного ключа, тогда эта таблица теоретически не является «сущностью». Это должно быть частью другого объекта, вы можете сопоставить несколько таблиц с одним объектом в Hibernate. - person Reddy; 28.06.2012
comment
Hibernate (и JPA в целом) не заботится о том, есть ли у вас физический первичный ключ, определенный в таблице. Вам просто нужен столбец или группа столбцов, которые однозначно идентифицируют каждую строку. Все столбцы должны быть необнуляемыми. - person Steve Ebersole; 29.06.2012
comment
@ Стив, кажется, я неправильно понял вопрос, обновил свой ответ, чтобы поставить составной идентификатор в качестве первого варианта. - person Reddy; 29.06.2012