hibernate - uniqueResult не работает - PullRequest
4 голосов
/ 10 января 2010

У меня есть контроллер входа, который использует метод hibernate uniqueResult. Все работает нормально, когда я тестирую его на сервере Eclipse Tomcat. Но при развертывании моих веб-приложений на сервере Tomcat (на той же машине) происходит сбой: он всегда возвращает ноль, даже если я использую правильные учетные данные.

Вот мой код гибернации:

session.createCriteria(User.class)
            .add(Restrictions.eq(User.USERNAME_FIELD, userName))
            .add(Restrictions.eq(User.PASSWORD_FIELD, password)).uniqueResult();

Спасибо!

Ответы [ 3 ]

5 голосов
/ 10 января 2010

Может быть, вы должны попытаться увидеть фактический запрос и параметры гибернации с помощью регистратора. Два «регистратора», которые вы должны сделать для «отладки»:

  • org.hibernate.SQL
  • org.hibernate.type

Поставьте оба на TRACE или ALL и проверьте результат при ведении журнала. Для получения дополнительной информации о регистраторе см. документацию по спящему режиму .

Наиболее распространенным случаем будет log4j. AFAIK, hibernate.show_sql устарело.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>
<appender name="Stdout" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
    </layout>
</appender>

<logger name="org.hibernate.SQL">
    <level value="TRACE"/>
</logger>

<logger name="org.hibernate.type">
    <level value="TRACE"/>
</logger>

<root>
    <level value="INFO"/>
    <appender-ref ref="Stdout"/>
</root>

</log4j:configuration>
1 голос
/ 10 января 2010

Недостаточно информации, попробуйте отследить генерируемый SQL:

Установить в log4j.properties

log4j.logger.org.hibernate.SQL=TRACE
log4j.logger.org.hibernate.type=TRACE

Или установите эти свойства Hibernate

hibernate.show_sql=true
hibernate.format_sql=true

Затем попробуйте выполнить эти запросы с переданными параметрами, которые возвращают ноль непосредственно в базе данных.

0 голосов
/ 10 января 2010

Я решил эту проблему, добавив session.flush()

Но я определенно не доволен этим :-(. Пожалуйста, скажите мне, есть ли лучшее решение? Спасибо.

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