2009-10-27 4 views
4

Comment mapper une énumération avec un champ? Comment annoter pour que les valeurs H, C soient conservées dans la base de données? Si je garde @Enumerated(EnumType.STRING), HIGHSCHOOL au lieu de H sera stocké dans la base de données. Si j'utilise EnumType.ORDINAL, 1 au lieu de H sera stocké dans la base de données. Veuillez suggérer une solution.hibernate - Comment annoter une propriété enum avec un champ

Répondre

3

Il n'y a pas de façon intégrée de faire cela dans Hibernate. Vous pouvez écrire un UserType pour le faire pour vous si vous le souhaitez.

This est un bon début, mais vous aurez besoin de remplacer les implémentations nullSafeSet() et nullSafeGet() pour stocker votre code ENUM (par exemple « H »/« C »/ce que vous avez) et retourne une instance appropriée enum sur cette base.

Si vous avez plus d'un type d'énumération, vous pouvez implémenter l'interface ParameterizedType pour transmettre le type enum en tant que paramètre ou utiliser la réflexion pour récupérer le "code" tant que les méthodes d'accès sont nommées de façon cohérente.

0

Merci ChssPly76 pour la solution. J'ai implémenté un type d'utilisateur et ça marche bien. En fait, il existe un exemple dans la communauté hibernate pour conserver la valeur/token dans l'énumération. Click here: StringValuedEnum

Questions connexes