Supprimer le rembourrage ajouté par les bases de données DB2 héritées sur les résultats de la requête

StackOverflow https://stackoverflow.com/questions/3880552

  •  28-09-2019
  •  | 
  •  

Question

J'ai la configuration suivante.

'Apps/Reports' <---------> 'DB2 Connect' <------------> 'Legacy DB2 on AS400'
               `Hibernate`               `native calls`

Lorsque les données sont récupérées par l'application, elles seront rembourrées avec des espaces supplémentaires si la longueur est inférieure à la longueur de la colonne. À noter lors de l'exécution d'une requête, si le WHERE Le paramètre de cause n'est pas rembourré, il est automatiquement rembourré avec des espaces supplémentaires de telle sorte que la requête récupérera les mêmes enregistrements pour un paramètre rembourré et non rembourré.

Existe-t-il un moyen (de préférence sur le paramètre IBM DB2 Connect ou Connection String) pour supprimer des espaces blancs supplémentaires d'un résultat?

Était-ce utile?

La solution

Les colonnes dans les iSeries sont-elles définies comme char ()? Je suppose que c'est ainsi que c'est ainsi que Char () fonctionne - c'est une longueur de champ fixe, pas une longueur de champ variable (c'est à cela que sert Varchar).

Autres conseils

Vous pouvez implémenter un Type Usernate Hibernate qui coupe automatiquement les chaînes. Il y a de bons exmaples sur

https://forum.hibernate.org/viewtopic.php?t=928294

http://java.dzone.com/articles/annoting-custom-types

http://santescas.blogspot.de/2014/02/creando-un-usertype-de-hibernate-que-se.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top