I believe I’ve found a mistake in the documentation.
Namely Section 3.7.2 Composite Identifiers states, that JPA requires the following from Composite Identifiers:
- The primary key class must be public and must have a public no-arg constructor.
- The primary key class must be serializable.
However in the release notes of JPA 3.2 it states: Primary key classes are no longer required to be public and serializable.
I’m assuming, this was simply not updated and no longer reflects the implementation. Therefore I can safely ignore these two points.