странный спящий режим createSQLQuery возвращает символ CHAR |, но строку - PullRequest
2 голосов
/ 15 июня 2011

Я использую hibernate createSQLQuery, но он возвращает только первый символ.

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

Я использую:

  • Mysql
  • hibernate 3.2

Снимок:

enter image description here

У меня есть Google 1020 * stackoverflow , forum.hibernate , atlassian

ОБНОВЛЕНИЕ: Я также проверил все журналы запросов Hibernate и даже журнал запросов MySQL одинаковы.

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

Ответы [ 3 ]

6 голосов
/ 28 октября 2011

Вы пытались установить Scalar по вашему запросу?

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();
2 голосов
/ 15 июня 2011

Сначала попробуйте запустить запрос, сгенерированный hibernate, в базе данных, а затем попытайтесь сопоставить результаты.Если запрос к базе данных также возвращает тот же результат, то проверьте определение вашей таблицы, код действительно строковый или что-то еще.

И лучший вариант для записи запросов, которые в запросы SQL будут записывать их, вhbm-файл, а затем определите в нем возвращаемые свойства, которые вам очень помогут, так как тогда вы сможете конвертировать выходные данные в нужные объекты, а не в массив объектов.

0 голосов
/ 25 марта 2014

Вы можете выполнить простое преобразование в операторе SQL.

select convert(varchar, Name) from Person

Проблема существует в старых версиях Hibernate, когда char автоматически подключается к значению столбца Character.https://hibernate.atlassian.net/browse/HHH-2304

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...