Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate выборка SQL, Как получить?  
V
    Опции темы
Molodec
Дата 10.8.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.12.2010
Где: Украина

Репутация: нет
Всего: 1



Добрый день, господа. Помогите, пожалуйста с проюлемой.
Пользуюсь Hibernate для доступа к базе данных MS SQL.
Все настроил, работает, но есть одна проблема.
Нужно получить данные, которые вернет SQL запрос.
Допустим в двумерный массив, или же в List<List>... 
Но, здесь я постоянно получаю ошибки... 
Код:
Код

package ourbook.util;

import java.io.File;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class KonkursUtil {

    public static List<List<String>> getFirstData() throws IOException {
        Session s = HibernateUtil.getSessionForMSSQL().openSession();
        List abits = new ArrayList();
        Transaction transaction = null;
        try {
            transaction = s.beginTransaction();
            File sqlResource = new File("D:\\RC2011\\Программы\\Разработка\\2\\Abit.sql");
            SQLQuery q = s.createSQLQuery(FileUtils.readFileToString(sqlResource, "utf-8"));
            q.iterate();
            transaction.commit();
        } catch (HibernateException e) {
        } finally {
            s.close();
        }
        return abits;
    }
}

SQL queries do not currently support iteration
Ясно. Не поддерживает итератор. Пробую так. 
Код

try {
            transaction = s.beginTransaction();
            File sqlResource = new File("D:\\RC2011\\Программы\\Разработка\\2\\Abit.sql");
            SQLQuery q = s.createSQLQuery(FileUtils.readFileToString(sqlResource, "utf-8"));
            q.list();
            transaction.commit();
        } catch (HibernateException e) {
        } finally {
            s.close();
        }

Ругается:
10.08.2011 12:36:58 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 42601
10.08.2011 12:36:58 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: syntax error at or near ","
Хотя запрос верный. 
Открываю его в NetBeans как sql файл. Нажимаю выполнить - выполняется отлично. 
Тоже самое когда пишешь:
Query q = s.createQuery(FileUtils.readFileToString(sqlResource, "utf-8"));
Как принять эти данные... Уже не знаю. 

Это сообщение отредактировал(а) Molodec - 27.8.2011, 10:13
PM MAIL   Вверх
danilych
Дата 10.8.2011, 12:50 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



запрос в студию
PM MAIL   Вверх
Molodec
Дата 10.8.2011, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.12.2010
Где: Украина

Репутация: нет
Всего: 1



Код

SELECT pa.code, 
        p.surname, 
        p.name, 
        p.second_name,
    '',
    '',
    '',
        isNULL(pa.nomf,''),
        isNULL(convert(varchar(4),pa.nomf_data,111),''),
        isNULL(pa.noms,''),
        isNULL(convert(varchar(4),pa.noms_data,111),''),
        isNULL(pa.nomt,''),
        isNULL(convert(varchar(4),pa.nomt_data,111),''), 
    case pa.dNom when 6 then 4
                        when 2 then 6
                        when 14 then 18
                        when 4 then 8
                        when 1 then 9
                        when 7 then 13
                        when 8 then 15
                        when 9 then 17 else 0 end
FROM Profiles AS p, ProfileA AS pa
WHERE 
p.code=pa.profiles 
ORDER BY 2

Кстати, пробовал в отладчике посмотреть запрос в q. Так он полностью идентичен с тем, что успешно выполняется в файле. В чем может быть загвоздка.... 

Это сообщение отредактировал(а) Molodec - 10.8.2011, 13:07
PM MAIL   Вверх
danilych
Дата 10.8.2011, 13:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



может попробовать ввести алиасы для полей
PM MAIL   Вверх
Molodec
Дата 10.8.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.12.2010
Где: Украина

Репутация: нет
Всего: 1



Алиасы не помогают. Пробовал. Проблема с запятой возникает в 9,11,13 строчке. Когда их удалю - другая проблема:
Код

10.08.2011 13:47:50 org.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: 25P02
10.08.2011 13:47:50 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: ERROR: current transaction is aborted, commands ignored until end of transaction block

Конечно же. list может и не применим когда у меня нет сущности с маппингом,
но когда прохожу в отладчике, вижу что у q поле queryReturns=0. 
Значит он все таки не выполняется... 
Или это чуть чуть не то? 
Кстати, iterate() не работает для SQL запросов. Как его тогда пройти? 
=================
Даже такой запрос cant execute...
Код

SELECT  code
FROM ProfilesA

=================
Через JDBC, как ни странно все работает...


Это сообщение отредактировал(а) Molodec - 10.8.2011, 14:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.