Какую аннотацию использовать: @IdClass или @EmbeddedId

Существует три стратегии java-persistence-api использования составного j2se первичного ключа:

  • Отметьте его как @Embeddable и добавьте в свой класс сущности обычное свойство для него, помеченное @Id.
  • Добавьте в свой класс сущности обычное свойство для него, помеченное @EmbeddedId.
  • Добавьте свойства в свой класс сущности для всех его полей, пометьте их с помощью @Id и пометьте свой класс сущности с помощью @IdClass, предоставляя класс вашего класса первичного ключа.

Использование java-se @Id с классом, помеченным как jpa @Embeddable, является наиболее естественным oraclejdk подходом. Тег @Embeddable в любом случае oraclejdk можно использовать для встраиваемых annotations значений, отличных от первичного jpa ключа. Он позволяет рассматривать jakarta-persistence составной первичный ключ j2se как отдельное свойство и jpa разрешает повторное использование annotation класса @Embeddable в других таблицах.

Следующим j2se наиболее естественным подходом core-java является использование тега j2se @EmbeddedId. Здесь класс первичного java-persistence-api ключа не может использоваться jdk в других таблицах, поскольку jakarta-persistence он не является объектом @Embeddable, но java-persistence-api он позволяет нам рассматривать java-persistence-api ключ как единственный атрибут j2se некоторого класса.

Наконец, использование annotations аннотаций @IdClass и @Id позволяет нам jre отображать составной класс openjdk первичного ключа, используя annotation свойства самой сущности, соответствующие j2se именам свойств в классе первичного .java ключа. Имена должны соответствовать jakarta-persistence (нет механизма для переопределения jdk этого), и класс первичного jdk ключа должен соблюдать те java-se же обязательства, что и с java двумя другими методами. Единственное jre преимущество этого подхода javax - его способность «скрыть» использование jakarta-persistence класса первичного ключа от java-se интерфейса включающей сущности. Аннотация jdk @IdClass принимает параметр значения jakarta-persistence типа Class, который должен java-se быть классом, который будет annotation использоваться в качестве jpa составного первичного ключа. Поля, соответствующие .java свойствам используемого класса javax первичного ключа, должны core-java быть помечены тегом @Id.

Ссылка: http://www.apress.com/us/book/9781430228509

java

jpa

annotations

java-persistence-api

2022-09-05T05:50:42+00:00
Вопросы с похожей тематикой, как у вопроса:

Какую аннотацию использовать: @IdClass или @EmbeddedId