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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate. Как узнать причины SQLGrammarException? 
V
    Опции темы
ochnev
Дата 16.6.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пытаюсь сделать примитивнейший запрос:
Код

Query getPayments = session.createQuery("from InstructorPayment payment order by payment.id asc");
List payments = getPayments.list();


На 2-й строке получаю SQLGrammarException:
Цитата

org.hibernate.exception.SQLGrammarException: could not execute query
    org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    org.hibernate.loader.Loader.doList(Loader.java:2223)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    org.hibernate.loader.Loader.list(Loader.java:2099)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
    org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
    org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
    org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    ru.sixthsense.servlet.InstructorWorkHistoryServlet.doGet(InstructorWorkHistoryServlet.java:206)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)


Таблица пустая, но не из-за этого же оно падает. Мэппинг проверил - вроде всё нормально.

Мэппинг:
Код

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="ru.sixthsense.data.InstructorPayment" table="instructor_payment">
        <id name="id" column="id">
            <generator class="native"/>
        </id>

        <property name="amount"/>
        <property name="bonusOrFine" column="bonus_or_fine" type="double"/>
        <property name="payDate" column="pay_date" type="timestamp"/>
        <property name="verified" column="verified" type="timestamp"/>
        <property name="comment"/>

        <many-to-one name="instructor" column="instructor_id" class="ru.sixthsense.data.User"/>
        <many-to-one name="manager" column="manager_id" class="ru.sixthsense.data.User"/>
    </class>
</hibernate-mapping>


Таблица:
Код

CREATE TABLE instructor_payment (
    id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
    amount DECIMAL(10,2) NOT NULL,
    bonusOrFine DECIMAL(10,2) NOT NULL,
    pay_date DATETIME NOT NULL,
    verified DATETIME,
    comment VARCHAR(100),
    instructor_id INTEGER NOT NULL REFERENCES users,
    manager_id INTEGER NOT NULL REFERENCES users
) CHARACTER SET utf8;


Всё раньше работало, вдруг сломалось на ровном месте. Я базу переделывал, но нужная таблица на месте.
Что происходит? Как найти реальную причину SQLGrammarException при таком stack trace, в котором нет ни малейших подробностей о проблеме?

PM MAIL   Вверх
AntonSaburov
Дата 16.6.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Добавь в hibernate.cfg.xml

Код

        <property name="show_sql">true</property>


Тогда можно будет посмотреть реальный SQL - ну и увидишь. Возможно smile
PM MAIL WWW ICQ   Вверх
necromancer
Дата 16.6.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну еще можно воспользоватся какой нить IDE в режиме дебага и посмотреть throw cause


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
Zlatogorov
Дата 16.6.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Причина скорее всего (99%) в mapping : не определены типы данных для полей.
К примеру здесь <property name="bonusOrFine" column="bonus_or_fine" type="double"/>,  тип должен стоять java.lang.Double , ну и т.д.
А просто double  не существует.
Ну и timestamp должен быть java.util.Date.

Это сообщение отредактировал(а) Zlatogorov - 16.6.2008, 17:44
PM MAIL ICQ   Вверх
tux
Дата 16.6.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Цитата(ochnev @  16.6.2008,  16:34 Найти цитируемый пост)
Всё раньше работало, вдруг сломалось на ровном месте.

Точно работало? Вот, например, в маппинге колонка называется bonus_or_fine, а в таблице bonusOrFine.

Цитата(Zlatogorov @  16.6.2008,  17:40 Найти цитируемый пост)
К примеру здесь <property name="bonusOrFine" column="bonus_or_fine" type="double"/>,  тип должен стоять java.lang.Double , ну и т.д.
А просто double  не существует.

Существует - http://www.hibernate.org/hib_docs/referenc...ypes-basictypes.
PM MAIL Skype GTalk Jabber YIM   Вверх
ochnev
Дата 16.6.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Точно.
Каюсь.
Что-то переделывал и в попыхах copy/paste не там сделал.
 smile 

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

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

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


 




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


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

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