Разница между использованием @Id и @EmbeddedId в Java JPA заключается в подходе к определению составного первичного ключа. 14
При использовании @Id столбцы первичного ключа указываются дважды: один раз в классе составного первичного ключа, а затем снова в классе сущности с помощью аннотации @Id. 1 Этот подход используется, когда не часто используется полный составной первичный ключ в запросах, а только его части. 4
При использовании @EmbeddedId доступ к объекту первичного ключа осуществляется через метод доступа к полю, что даёт чёткое представление о полях, входящих в составной ключ. 1 Этот подход предпочтительнее, когда часто используется полный идентификатор как объект. 2
Также при использовании @EmbeddedId можно пропустить аннотацию @Embeddable в классе сущности, в то время как при использовании @Id она обязательна. 5