As Pascal wrote here's part of the answer:
Which annotation should I use: @IdClass or @EmbeddedId
In the end, I believe using @IdClass
is much easier in practice, because you have to add the embeddedId
property name to dereference PK properties, while these aren't written for all non-PK properties.
You always have to remember exactly which properties are part of a PK and those which are not. That complicates writing JPQL queries unneccessarily.
Also, AFAIK the JPA 2.0 spec allows you to put @Id
onto @XToX
/@JoinColumn
/s properties and it introduces the @MapsId
annotation, so that mapping identifying relationships (a.k.a. derived identifiers in JPA) are more natural to implement.