Question

Je veux utiliser le type UUID natif de PostgreSQL avec Java UUID. J'utilise Hibernate comme mon fournisseur de JPA et ORM. Si je tente de sauver directement, il est tout simplement enregistré en tant que bytea dans Postgres.

Comment puis-je faire?

Était-ce utile?

La solution

Essayez d'utiliser la dernière version de développement du pilote JDBC (actuellement 8.4dev-700), ou attendre la prochaine version de version. (Sous la direction d'ajouter: a été libéré 8,4 à 701)

Le notes de version mentionner ce changement:

  

Carte de la base de données de type UUID à java.util.UUID. Cela ne fonctionne que pour les versions relativement nouveau serveur (8.3) et (1,5) JDK.

Autres conseils

Voici une republication de ma réponse sur Postgresql UUID pris en charge par Hibernate? ... Je sais que cette question est vieux, mais si quelqu'un trébuche à travers elle, cela les aidera à sortir.

Ceci peut être résolu en ajoutant l'annotation suivante à l'UUID:

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

Quant à savoir pourquoi Hibernate ne se contente pas activer ce réglage par défaut, je ne pourrais pas vous dire ...

UPDATE : Il semble encore avoir des problèmes en utilisant la méthode createNativeQuery pour ouvrir des objets qui ont UUID. Heureusement, la méthode createQuery a jusqu'à présent travaillé très bien pour moi.

Dans l'usage non-JPA je crée un UserType pour formater la UUID comme une chaîne qui accepte PostgreSQL, puis juste donner le nom de la mise en œuvre de UserType comme type de colonne.

vous pouvez essayer avec:

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

où columnDefinition est un fragment de SQL natif

Peut-être que vous pouvez obtenir le type UUID à auto-converti en chaîne (uuid.toString () devrait donner la représentation 36-char canonique)? BDs convertir généralement les choses de manière fiable entre les chaînes et les types natifs.

Essayer cette

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()")
private String uuid;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top