Хотя можно использовать класс PK и использовать его в качестве члена сущностей с @EmbeddedId
, это, как правило, сделает все ваши JQL-запросы и код Java более подробными:
select a.addressKey.id from Address a
или
AddressKey addressKey = new AddressKey();
addressKey.setCountry("USA");
addressKey.setId(634);
Address a = entityManager.find(Address.class, addressKey);
Так что я бы лично использовал это только для реального составного ключа (т.е. не с одним атрибутом).
На самом деле, мне действительно интересно, какую проблему вы пытаетесь решить, потому что в конце вам все равно придется иметь дело с Long
. На самом деле я не вижу добавленной стоимости единственного атрибута безопасного типа первичного ключа.