Типичный безопасный первичный ключ в Hibernate / JPA - PullRequest
2 голосов
/ 05 февраля 2010

Я ищу способ получить типизированный первичный ключ для моих сущностей с использованием обобщений в Hibernate. Вместо этого

@Entity
public class User{

@PrimaryKey
Long id

}

Я думал об этом ...

@Entity
public class User{

@PrimaryKey
PrimaryKey<User,Long> id

}

Или сделайте вывод типа еще дальше ...

Есть идеи? Кто-нибудь когда-нибудь пробовал это раньше? Вы бы сделали это, сделав ваш класс PrimaryKey встраиваемым?

@Entity
public class User extends MyEntity<Long>//Primary key type{

@PrimaryKey
PrimaryKey<User> id;

}

Ответы [ 2 ]

3 голосов
/ 06 февраля 2010

Хотя можно использовать класс 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. На самом деле я не вижу добавленной стоимости единственного атрибута безопасного типа первичного ключа.

0 голосов
/ 06 февраля 2010

Если вы ищете типичный способ идентификации сущности, как насчет использования его LazyLoadingProxy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...