2 Stimmen

hibernate createSQLQuery liefert einen CHAR|Character aber String

Ich verwende Hibernate createSQLQuery aber es gibt nur das erste Zeichen zurück.

tableName = 'select code, name from airports where excludeFromSearch = 0 order by name';
s.createSQLQuery(tableName).list();

Ich benutze:

  • Mysql
  • Hibernat 3.2

Schnappschuss:

enter image description here

Ich habe gegoogelt Stackoverflow , forum.hibernate , atlassian

UPDATE: Ich habe auch alle Hibernate-Abfrageprotokoll und sogar Mysql-Abfrageprotokoll überprüft beide sind gleich.

`code char(3)`  // <strike>might</strike> must cause problem as in screen shot
name varchar(100)

6voto

Fred Punkte 4588

Haben Sie versucht, Scalar auf Ihre Anfrage einzustellen?

StringType stringTypeInstance = StringType.class.newInstance();

String tableName = 'select code, name from airports where excludeFromSearch = 0 order by name';

List<Object[]> result = s.createSQLQuery(tableName)
    .addScalar("code",stringTypeInstance)
    .addScalar("name",stringTypeInstance )
    .list();

2voto

M.J. Punkte 15506

Versuchen Sie zunächst, die von Hibernate generierte Abfrage auf die Datenbank abzufeuern, und versuchen Sie dann, die Ergebnisse abzugleichen. Wenn die Abfrage auf der Datenbank auch das gleiche Ergebnis zurückgibt, dann überprüfen Sie Ihre Tabellendefinition, der Code ist wirklich String oder etwas anderes.

Und bessere Option für das Schreiben von Abfragen, die SQL-Abfragen werden, um sie zu schreiben, in der Hbm-Datei, und definieren Sie dann zurück Eigenschaften in es, das wird Ihnen viel helfen, wie dann u in der Lage, die Ausgabe in gewünschte Objekte, nicht das Array des Objekts umzuwandeln.

0voto

Augustas Punkte 1006

Sie können einfache Konvertierungen in SQL-Anweisungen vornehmen.

select convert(varchar, Name) from Person

In älteren Versionen von Hibernate besteht ein Problem, wenn char automatisch mit dem Wert der Spalte Character verdrahtet wird. https://hibernate.atlassian.net/browse/HHH-2304

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X