2 votes

Comment mapper un Firebird Smallint en Boolean avec les annotations Hibernate ?

J'ai une ancienne base de données fonctionnant sous Firebird 2.0, et j'ai besoin de mapper une colonne SmallInt vers un type Boolean, qui lorsque SmallInt = 0 alors est False, et lorsque SmallInt = 1 c'est True.

J'ai également besoin que cela soit fait en utilisant des annotations Hibernate.

Je suis en train d'utiliser Hibernate 3.6.

Des conseils ?

Merci d'avance.

5voto

Rafael Cruz Points 647

Après avoir cherché un peu plus, j'ai pu trouver ce type hibernate org.hibernate.type.NumericBooleanType sur http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-value-basic

Et j'ai essayé de mapper de cette manière :

@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean field;

Mais, cela n'a pas fonctionné, car Hibernate a lancé cette exception :

org.hibernate.HibernateException: Type de colonne incorrect dans %TABLE_NAME% pour la colonne %COLUMN_NAME%. Trouvé : smallint, attendu : integer

Donc, j'ai essayé de forcer la définition de cette colonne, en la mappant de cette manière :

@Column(columnDefinition = "SMALLINT")
@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean field;

Et maintenant cela fonctionne à merveille.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X