У меня есть таблица без первичного ключа, и ее также нельзя создать. Я могу создать уникальный ключ, используя три столбца этой таблицы. Теперь спящий режим требует идентификатор для каждого аннотированного класса, как мне удовлетворить этот идентификатор уникальным идентификатором, который я могу создать.
Идентификатор Hibernate Annotations для таблицы без первичного ключа
Ответы (1)
Если это тип сущности то вы должны использовать составной ключ. Это можно сделать, переместив поля первичного ключа в отдельный класс и сопоставив их в классе сущностей с аннотацией @Id.
См. Сопоставление составных первичных ключей и внешних ключей с составными первичными ключами< /а>
Если это не сущность, а тип значения, вы должны сопоставить его соответствующим образом. См. https://stackoverflow.com/a/1696146/324900 и Типы объектов и значений в спящем режиме
person
Reddy
schedule
28.06.2012
Да, ты можешь. Но вы сказали, что у вас нет первичного ключа, тогда эта таблица теоретически не является «сущностью». Это должно быть частью другого объекта, вы можете сопоставить несколько таблиц с одним объектом в Hibernate.
- person Reddy; 28.06.2012
Hibernate (и JPA в целом) не заботится о том, есть ли у вас физический первичный ключ, определенный в таблице. Вам просто нужен столбец или группа столбцов, которые однозначно идентифицируют каждую строку. Все столбцы должны быть необнуляемыми.
- person Steve Ebersole; 29.06.2012
@ Стив, кажется, я неправильно понял вопрос, обновил свой ответ, чтобы поставить составной идентификатор в качестве первого варианта.
- person Reddy; 29.06.2012