Общий список Hibernate и вывод данных

Я искал это, и я не могу найти ответ. Я думаю, что упускаю что-то очевидное, или я не так хорошо понимаю Hibernate, как думал. У меня есть проект, который может получить доступ к более чем 100 таблицам, поэтому я пытаюсь реализовать общий DAO, который может читать любую из этих таблиц и выводить результат на листе Excel. Ниже приведен фрагмент кода, который я использую.

SQLQuery query = session.createSQLQuery("SELECT * FROM " + tables + " WHERE " + conditions );
List<Object[]> ob = query.list();
for(Object[] obj : ob ){
    for(int x=0; x<obj.length; x++)
        System.out.println("Col: " + obj[x].toString());}

Однако, когда я распечатываю объекты, все, что я получаю, это первый символ в таблице.

Col1  Col2  Col3
 1      8     8

Когда фактические значения:

Col1  Col2  Col3
 135   800   867

Я сделал что-то не так или я совершенно не понимаю, как работает Hibernate.

Заранее спасибо.

JF

Изменить Был добавлен код, который я использовал для вывода объекта, а также результаты и фактические данные таблицы.


person Jesusfreaks95    schedule 13.10.2014    source источник
comment
В чем ценность таблиц? В чем ценность условий? Как вы отображаете результат и что отображается?   -  person JB Nizet    schedule 13.10.2014
comment
Tables — одна из многих таблиц, к которым он может получить доступ. Это то, что вводит пользователь, то же самое с условиями (опасно, я знаю). Для быстрого тестирования я просто перебирал список объектов и распечатывал его значение (obj[x].toString() был точным вызовом).   -  person Jesusfreaks95    schedule 13.10.2014
comment
Это не отвечает на мой вопрос. Покажите нам код. И покажите нам результат, который вы получите. Я предполагаю, что вы получаете что-то вроде [Ljava.lang.Object;@78308db1, верно?   -  person JB Nizet    schedule 13.10.2014
comment
Отредактированный оригинал с дополнительной информацией. Если это не ответ на ваш вопрос, я извиняюсь, потому что я не понимаю, что вам нужно.   -  person Jesusfreaks95    schedule 13.10.2014


Ответы (2)


Попробуйте распечатать его с помощью:

for(Object[] obj : ob ){   
    System.out.println("Row: " + Arrays.toString(obj));
person Vlad Mihalcea    schedule 13.10.2014
comment
Я сделал, как вы рекомендовали, и я получаю ту же проблему. Он форматирует данные немного по-другому, но я все равно получаю только первый символ каждого значения в таблице. - person Jesusfreaks95; 14.10.2014
comment
Попробуйте использовать простой оператор JDBC. Вы можете использовать session.doWork и выполнить оператор, чтобы проверить фактические значения выбранного столбца. - person Vlad Mihalcea; 14.10.2014
comment
Таким образом, использование doWork дало мне полные значения каждого столбца. Однако предыдущий SQL-запрос по-прежнему дает только первый символ. - person Jesusfreaks95; 14.10.2014
comment
Session.doWork позволяет вам выполнять JDBC, чтобы вы могли выяснить, является ли это Hibernate или БД, которая возвращает только неправильные значения. - person Vlad Mihalcea; 14.10.2014

Итак, я нашел проблему.

https://hibernate.atlassian.net/browse/HHH-2304

Подытожим и вот:

Собственный запрос Hibernate — столбец char(3)

показывает решение.

Для тех, кто хочет резюме:

Hibernate имеет проблемы с возвратом типа char(>1), поэтому вам нужно добавитьScalar или привести возвращаемые значения, чтобы получить полное значение.

person Jesusfreaks95    schedule 14.10.2014