Могу ли я использовать аннотацию @Id внутри класса Embedded, только если класс Embedded не используется в качестве Id для класса First? - PullRequest
0 голосов
/ 27 февраля 2019

У меня следующая структура:

@Entity
class First {
  @Embedded
  private Second second;
  ..
  ..
}

@Embeddable
class Second {
  @Id
  private Long id;
  private String name;
  // and many attributes are not meant to be part of the Id
  ..
  ..
}

Когда я запускаю код, возникает исключение:

Идентификатор для сущности First не найден.

Есть ли способ установить @id во встроенном классе?

ПРИМЕЧАНИЕ: Второй класс используется не только как класс Id, поэтому я нене хочу использовать EmbeddedId

1 Ответ

0 голосов
/ 27 февраля 2019

Вариант 1. Если в сущности есть составной ключ, необходимо пометить @Embeddable для класса составного ключа и использовать аннотацию @EmbeddedId во встроенном классе.

Вариант 2. Если вы не хотите использовать @EmbeddedId и хотите использовать @Id во встроенном классе, то используйте @Id для полей во встроенном классе, а также используйте его во встраиваемых полях класса.Создайте объект встраиваемого класса, вместо этого используйте аннотацию @IdClass на уровне объекта.

...