J'essaie d'utiliser UUID dans Hibernate.Comment utiliser UUID comme clé primaire pour Hibernate Entity?
Demandez la description de base de classe @Entity
suivante (avec @MappedSuperclass
annotation):
@Id
@Column(name="id")
private UUID id;
public UUID getId()
{
return id;
}
Pour le test, je suis en train de lire toutes les entités de ma classe de base de données (base de données existe, les enregistrements existent). Ma base de données est PostgreSQL 8.4 avec le support UUID et la clé primaire est de type UUID.
Courir mon test, je reçois le texte suivant dans le journal:
[junit] 14:21:34,839 INFO LongType:203 - could not read column value from result set: id0_0_; Bad value for type long : d46668b8-e494-42ba-803f-c43524ac3f31
...
[junit] org.postgresql.util.PSQLException: Bad value for type long : d46668b8-e494-42ba-803f-c43524ac3f31
[junit] at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2796)
[junit] at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2019)
[junit] at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2431)
[junit] at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:240)
[junit] at org.hibernate.type.LongType.get(LongType.java:51)
[junit] at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
[junit] at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
[junit] at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121)
On dirait que Hibernate n'utilise pas vraiment le type UUID il peut analyser de mon entité Description annotée. La même situation avec Spring au lieu de UUID.
Sinon, comment puis-je dire Hibernate Je voudrais utiliser soit UUID ou String
au lieu de Long
pour la clé primaire?
PS: Hibernate J'utilise 3.3.2.GA. Je n'utilise pas EntityManager
. Je décris le mapping avec des annotations et configure Hibernate avec Spring.