PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

UUID persistant dans PostgreSQL à l'aide de JPA

Le pilote PostgreSQL JDBC a malheureusement choisi une manière de représenter les codes de type non standard JDBC. Ils les mappent simplement tous à Types.OTHER. Pour faire court, vous devez activer un mappage de type Hibernate spécial pour gérer les mappages UUID (aux colonnes du type de données uuid spécifique à postgres) :

@Id
@Column(name = "customer_id")
@org.hibernate.annotations.Type(type="org.hibernate.type.PostgresUUIDType")
private UUID id;

ou plus succinctement :

@Id
@Column(name = "customer_id")
@org.hibernate.annotations.Type(type="pg-uuid")
private UUID id;

Une autre (meilleure) option consiste à enregistrer org.hibernate.type.PostgresUUIDType comme mappage de type Hibernate par défaut pour tous les attributs exposés en tant que java.util.UUID. Cela est couvert dans la documentation @ http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch06.html#types-registry