4 Stimmen

hibernate - uniqueResult schlägt lautlos fehl

Ich habe einen Login-Controller, der die Hibernate uniqueResult-Methode verwenden. Alles funktioniert gut, wenn ich es in Eclipse Tomcat Server testen. Aber wenn ich meine Webapps auf Tomcat-Server (auf dem gleichen Rechner) bereitstellen, schlägt es fehl: es gibt immer null zurück, auch wenn ich die richtigen Anmeldeinformationen verwenden.

Hier ist mein Hibernate-Code:

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

Ich danke Ihnen!

5voto

HMM Punkte 2967

Vielleicht sollten Sie versuchen, die tatsächliche Hibernate-Abfrage und die Parameter mithilfe des Loggers zu sehen. Die beiden Logger, die Sie zum "Debuggen" verwenden sollten, sind:

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

Setzen Sie beides auf TRACE ou ALL und überprüfen Sie das Ergebnis der Protokollierung. Für weitere Informationen über den Logger siehe die hibernate-Dokumentation .

Der häufigste Fall wäre log4j. AFAIK, hibernate.show_sql ist veraltet.

<?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>

1voto

Eran Medan Punkte 43538

Die Informationen reichen nicht aus. Versuchen Sie, das erzeugte SQL zurückzuverfolgen:

Eingestellt log4j.properties

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

Oder setzen Sie diese Hibernate-Eigenschaften

hibernate.show_sql=true
hibernate.format_sql=true

Versuchen Sie dann, diese Abfragen mit den übergebenen Parametern, die null zurückgeben, direkt in der Datenbank auszuführen.

0voto

robinmag Punkte 16500

Ich habe dieses Problem gelöst, indem ich Folgendes hinzugefügt habe session.flush() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X