Domanda

Vorrei utilizzare il tipo UUID nativo di PostgreSQL con un UUID Java. Sto usando Hibernate come il mio provider JPA e ORM. Se provo a salvarlo direttamente, è solo salvato come bytea in Postgres.

Come posso fare questo?

È stato utile?

Soluzione

Prova utilizzare l'ultima versione di sviluppo del driver JDBC (Attualmente 8.4dev-700), o attendere per la versione successiva. (A cura di aggiungere: 8,4-701 è stato rilasciato)

Il rilascio note parlare di questo cambiamento:

  

Visualizza la mappa del tipo di database uuid a java.util.UUID. Questo funziona solo per relativamente nuovo server (8,3) e (1,5) le versioni del JDK.

Altri suggerimenti

Ecco un repost della mia risposta sul Postgresql UUID supportato da Hibernate? ... so che questa domanda è vecchio, ma se qualcuno si imbatte in esso, questo li aiuterà fuori.

Questo può essere risolto aggiungendo la seguente annotazione all'UUID:

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

Per quanto riguarda il motivo per cui Hibernate non solo rendono questo l'impostazione predefinita, non ho potuto dire ...

Aggiorna : Ci sembrano ancora essere problemi con il metodo createNativeQuery per aprire oggetti che hanno i campi UUID. Fortunatamente, il metodo createQuery finora ha funzionato bene per me.

Nel linguaggio non-APP mi piacerebbe creare un UserType per formattare l'UUID come una stringa che PostgreSQL accetta, poi basta dare il nome della realizzazione UserType come il tipo di colonna.

si potrebbe provare con:

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

dove ColumnDefinition è un frammento di SQL nativo

Forse si può ottenere il tipo UUID da auto-convertito in una stringa (uuid.toString () dovrebbe dare la rappresentazione canonica 36-char)? DB di solito convertire le cose in modo affidabile tra le stringhe e tipi nativi.

Prova questo

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()")
private String uuid;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top