2014-10-13 1 views
0

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

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 

ли я сделал что-то неправильно, или я полностью недоразумение, как спящий режим работы.

Спасибо в продвижении.

ДФ

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

+0

Какова ценность таблиц? Какова ценность условий? Как вы показываете результат и что отображается? –

+0

Таблицы - одна из многих таблиц, к которым он мог получить доступ. Это то, что пользователь вводит, то же самое с условиями (Dangerous я знаю). Для быстрого тестирования я просто перебирал список объектов и печатал его значение (obj [x] .toString() был точным вызовом). – Jesusfreaks95

+0

Это не отвечает на мой вопрос. Покажите нам код. И покажите нам результат, который вы получите. Я предполагаю, что вы получаете что-то вроде [Ljava.lang.Object; @ 78308db1, правильно? –

ответ

0

Хорошо, так что я нашел этот вопрос.

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

подытоживает и здесь:

Hibernate native query - char(3) column

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

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

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

0

Попробуйте напечатать его с:

for(Object[] obj : ob){ 
    System.out.println("Row: " + Arrays.toString(obj)); 
+0

Я сделал то, что вы рекомендовали, и я получаю ту же проблему. Он форматирует данные несколько иначе, но я все же получаю только первый символ каждого значения в таблице. – Jesusfreaks95

+0

Попробуйте использовать простой оператор JDBC. Вы можете использовать session.doWork и выполнить инструкцию для проверки фактических выбранных значений столбца. –

+0

Таким образом, использование doWork дало мне полные значения каждого столбца. Однако предыдущий SQL-запрос по-прежнему дает только первый символ. – Jesusfreaks95