Entfernen Sie die Polsterung, die durch Legacy DB2 -Datenbanken zu Abfrageergebnissen hinzugefügt wurde
-
28-09-2019 - |
Frage
Ich habe das folgende Setup.
'Apps/Reports' <---------> 'DB2 Connect' <------------> 'Legacy DB2 on AS400'
`Hibernate` `native calls`
Wenn Daten von der Anwendung abgerufen werden, wird sie mit zusätzlichen Räumen gepolstert, wenn die Länge geringer ist als die Spaltenlänge. Bemerkenswerterweise beim Ausführen einer Abfrage, wenn die WHERE
Der Ursache Parameter ist nicht gepolstert. Es wird automatisch mit zusätzlichen Räumen gepolstert, sodass die Abfrage dieselben Datensätze für einen gepolsterten und nicht gepolsterten Parameter abrufen.
Gibt es einen Weg (vorzugsweise auf IBM DB2 Connect- oder Verbindungszeichenfolge Parameter), um zusätzliche Weißespaces von einem Ergebnisetet zu entfernen?
Lösung
Sind die Spalten in den Iserien als char () definiert? Ich gehe davon aus, denn so funktioniert char () - es ist eine feste Feldlänge, keine variable Feldlänge (dafür ist Varchar da).
Andere Tipps
Sie können einen Hibernate -UserType implementieren, der die Zeichenfolgen automatisch schneiden. Es gibt gute Exmaples an
https://forum.hibernate.org/viewtopic.php?t=928294
http://java.dzone.com/articles/annotating-custom-types
http://santescas.blogspot.de/2014/02/creando-un-usertype-de-hibernate-que-se.html