Bonjour à tous !

J'utilise Hibernate 4.1.1 et la base de données HSQLDB 2.2.8. J'utilise des UUID comme clés primaires que j'affecte manuellement à mes objets. Voici le mapping que j'utilise pour une clé de ce type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<id name="id" type="java.util.UUID" access="field">
            <column name="ID" />
            <generator class="assigned" />
        </id>
Le problème c'est que lors de la génération du schéma de la base le champ généré dans la base de données est un champ binaire de 255 octets, ce qui est beaucoup trop pour une donnée qui est de taille fixe et ne nécessite que 16 octets. Je perd 239 octets par enregistrement et j'en ai plusieurs dizaines de milliers. Ce n'est pas gênant pour l'instant mais ça risque de le devenir dans le futur.

Jusqu'à aujourd'hui je n'ai pas réussi à faire que le champ généré soit un Binary(16). J'ai changé le type en utilisant les différentes variantes d'uuid proposés par Hibernate, j'ai utilisé la valeur length mais elle est constamment ignorée.

J'ai essayé de faire un peu de debug dans le core d'Hibernate pour localiser l'endroit de la génération de schéma sans réel succès, tout au plus j'ai pu me rendre compte que le driver JDBC pouvait avoir sa part de responsabilité dans le sizing des champs.

Pour résumé je souhaiterais *simplement* que mes types UUID soient mappés sur des types BINARY(16) plutôt que BINARY(255), est-ce possible ?

Merci d'avance pour votre aide !