PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Persistindo UUID no PostgreSQL usando JPA


Infelizmente, o driver JDBC do PostgreSQL escolheu uma maneira de representar códigos de tipo não padrão JDBC. Eles simplesmente mapeiam todos eles para Types.OTHER. Para encurtar a história, você precisa habilitar um mapeamento especial do tipo Hibernate para manipular mapeamentos UUID (para colunas do tipo de dados uuid específico do postgres):
@Id
@Column(name = "customer_id")
@org.hibernate.annotations.Type(type="org.hibernate.type.PostgresUUIDType")
private UUID id;

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

Outra opção (melhor) é registrar org.hibernate.type.PostgresUUIDType como o mapeamento de tipo padrão do Hibernate para todos os atributos expostos como java.util.UUID. Isso é abordado na documentação @ http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch06.html#types-registry