Как мы можем сказать Hibernate сделать свойства идентификатора необязательными

1

Документация Hibernate, говорит, что:

Hibernate делает свойства идентификатора необязательными. Существует ряд причин, по которым вы должны их использовать. Мы рекомендуем, чтобы идентификаторы были "синтетическими", то есть сгенерированными без бизнес-значения.

Поскольку он говорит, что идентификатор является необязательным, я попытался создать объект без аннотации @Id для любого из полей. Затем я получил исключение:

Initial SessionFactory creation failed.org.hibernate.AnnotationException: 
No identifier specified for entity: org.hibernate.tutorials.User

Тогда это означает, что Hibernate makes identifier properties optional. Может кто-нибудь объяснить?

  • 1
    возможный дубликат stackoverflow.com/questions/9314453/…
Показать ещё 3 комментария
Теги:
hibernate

1 ответ

1
Лучший ответ

Опциональность идентификаторов связана с тем, что вам не нужно самостоятельно создавать содержимое столбца, так как Hibernate может автоматически генерировать его.

Напротив, было бы не очень разумно иметь столбец идентификации в таблице, поэтому Hibernate требует, чтобы вы определили соответствующее поле в своих классах Entity, чтобы сохранить какое-то идентифицирующее значение. Это необязательно должно быть @Id автоматического приращения, но, конечно, для каждой сущности требуется @Id Annotation в одном из своих полей, предпочтительно String или int

Ещё вопросы

Сообщество Overcoder
Наверх
Меню