【问题标题】:hibernate - uniqueResult silently failshibernate - uniqueResult 默默地失败
【发布时间】:2011-01-03 11:08:49
【问题描述】:

我有一个使用 hibernate uniqueResult 方法的登录控制器。当我在 Eclipse 的 tomcat 服务器中测试它时,一切正常。但是当我将我的 webapps 部署到 tomcat 服务器(在同一台机器上)时,它失败了:即使我使用正确的凭据,它也总是返回 null。

这是我的休眠代码:

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

谢谢!

【问题讨论】:

标签: hibernate spring tomcat


【解决方案1】:

没有足够的信息,尝试跟踪正在生成的SQL:

设置在log4j.properties

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

或者设置这些 Hibernate 属性

hibernate.show_sql=true
hibernate.format_sql=true

然后尝试运行这些查询,传递的参数直接在数据库中返回 null。

【讨论】:

    【解决方案2】:

    也许您应该尝试使用记录器查看实际的休眠查询和参数。您应该为“调试”制作的两个记录器是:

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

    将两者都放在TRACEALL 上并检查日志记录的结​​果。有关记录器的更多信息,请参阅the hibernate documentation

    最常见的情况是 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>
    

    【讨论】:

      【解决方案3】:

      我已经通过添加session.flush()解决了这个问题。

      【讨论】:

      • 为了帮助您,请执行我们的建议并将其添加到您的问题(生成的日志)以及代码的完整上下文中
      • 当我添加 log4j 依赖项时,我在 eclipse 的 tomcat 控制台中看到,webapp 不断重新加载,最终变成“java.lang.OutOfMemoryError: PermGen space” 我不知道如何解决这个问题:-(
      • 从数据库读取内容时需要 session.flush() 似乎很奇怪。我猜你的意思是代码库中的另一个地方,你实际保存东西的地方,不是吗?
      • @robinmag - PermGen: 添加 -XX:MaxPermSize=256m
      猜你喜欢
      • 2019-08-02
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多