Pregunta

Quiero usar UUID de tipo nativo de PostgreSQL con un UUID de Java. Estoy usando Hibernate como profesional de la APP y ORM. Si trato de guardar directamente, apenas se guarda como un bytea en Postgres.

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Trate de utilizar la última versión de desarrollo del controlador JDBC (Actualmente 8.4dev-700), o esperar a la próxima versión de lanzamiento. (Editado para añadir: 8,4-701 ha sido liberado)

El notas de mencionar este cambio:

  

representar el tipo de base de datos para uuid java.util.UUID. Esto sólo funciona para relativamente nuevo servidor (8.3) y (1.5) versiones de JDK.

Otros consejos

Esto es un repost de mi respuesta en Postgresql UUID soportado por Hibernate? ... sé que esta pregunta es viejo, pero si alguien se tropieza con ella, esto le ayudará a cabo.

Esto se puede resolver mediante la adición de la siguiente anotación a la UUID:

import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;

En cuanto a por qué Hibernate no se limita a hacer esto, el ajuste por defecto, yo no podría decir ...

Actualizar : Hay todavía parecen ser cuestiones utilizando el método createNativeQuery para abrir los objetos que tienen campos UUID. Afortunadamente, el método createQuery hasta ahora ha funcionado bien para mí.

En el uso no-APP que crearía un UserType para formatear el UUID como una cadena que PostgreSQL acepta, entonces acaba de dar el nombre de la aplicación UserType como el tipo de columna.

puede probar con:

 @Column(name="foo", columnDefinition="uuid") 

donde ColumnDefinition es un fragmento de SQL nativo

Tal vez se puede obtener el tipo UUID a convertir-auto a una cadena (uuid.toString () debe dar la representación canónica 36-char)? DB generalmente convertir las cosas de forma fiable entre las cuerdas y los tipos nativos.

Probar

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()")
private String uuid;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top