Garniture de chaîne de caractères en JPA

J'ai une db tableau avec les colonnes de type de données char(20). Je ne suis pas autorisé à le changer pour un varchar.

Je suis en train d'écrire une entité JPA mappés à cette table. J'aimerais que le champ de type chaîne de représentation de cette colonne dans ma classe entité contiennent toujours les garnis de valeur, et non pas la valeur de 20 caractères rembourré avec des espaces qui existe dans la base de données.

Je ne vois aucun moyen facile de le faire. (une annotation serait roche!). Pour le moment je suis juste de retour d'un garni de la valeur de mon getter(), mais cela se sent comme une bidouille.

Une recherche sur google offre pas d'aide sur ce. Des idées?

  • Je me demandais ce qui allait se passer, si vous souhaitez utiliser @ColumnDefinition et de définir la colonne comme VARCHAR même si c'est un CHAR. Le plus probable serait le résultat soit le même ou d'une erreur.
  • L'annotation @ColumnDefinition n'est utile que lors de la production de la db schéma. Si vous n'avez pas l'esprit à l'aide de pure mise en veille prolongée et en s'écartant de la JPA standard, vous pouvez utiliser Hibernate @ColumnTransformer à condition que vous ayez une base de données pour faire le travail de Vous pouvez trouver comment le faire en Hibernation référence: docs.jboss.org/hibernate/core/3.6/reference/en-US/html/...
  • Je ne vois pas quel est le problème avec votre solution originale. Votre apprpoach est la bonne. Comme vous pouvez le voir dans les réponses suggérées, il va pas faire plus simple que cela. La seule meilleure solution: modifier le champ de base de données VARCHAR, qui vous dit que vous ne pouvez pas.
  • si nous parlons de l'un ou des deux propriétés, je suis d'accord. Si c'est un modèle qui apparaît tous sur une grande base de code, un auditeur est beaucoup plus fiable
  • patrick floyd yep c'est comparants, tous sur une grande base de code.
  • J'ai eu le même problème composées à la clé(les deux champs) valeur des espaces. Ne pouvait pas utiliser @test de charge de la fonction il a donné Attempt to change a primary key field of an instance that already has a final object id. Only new, unflushed instances whose id you have not retrieved can have their primary keys changed.. Je me suis installé sur l'utilisation de return id.trim() dans une méthode de lecture.

InformationsquelleAutor jcreenaune | 2011-04-20