当前位置:  开发笔记 > 数据库 > 正文

在Hibernate中双重登录

如何解决《在Hibernate中双重登录》经验,为你挑选了1个好方法。

我一直非常成功地使用Hibernate,但今天我发现了一个与日志记录有关的奇怪现象.如果我为下面的类打开日志(在"调试"级别)org.hibernate(例如org.hibernate.SQLorg.hibernate.impl.SessionImpl),我会得到两个对应于这些类的每个日志行两次.我从来没有看到任何其他包的记录.

这是日志输出的摘录.第一行和第四行是我的,其他是Hibernate的:

23:54:45,472 TRACE UserDaoImpl:37 - Loading User by id: 2
23:54:45,473 DEBUG SQL:401 - select user0_.id as id22_2_, user0_.avatar as avatar22_2_, ...
23:54:45,473 DEBUG SQL:401 - select user0_.id as id22_2_, user0_.avatar as avatar22_2_, ...
23:54:45,499 TRACE PropertyDaoImpl:40 - Loading class com.myapp.locale.Region with ID 21
23:54:45,503 DEBUG SQL:401 - select region0_.id as id19_1_, region0_.code as code19_1_, ...
23:54:45,503 DEBUG SQL:401 - select region0_.id as id19_1_, region0_.code as code19_1_, ...

来自数据库一侧的证据表明,每个命令只发送一次(幸运的是!).

我使用Hibernate-Annotations 3.3.1.GA
和PostgreSQL JDBC连接器5.0.7
和log4j 1.2.14



1> Cowan..:

我只能想到:

    检查你的log4j配置是否没有在不同级别定义多个appender?如果您将appender连接到org.hibernate记录器,并再次附加到org.hibernate.SQL记录器,那么您将看到两次(除非您关闭较低级别记录器的可加性).

    您没有在SessionFactory上设置hibernate.show_sql属性?这不会启用log4j的日志记录(你通过log4j配置执行),它只是转储到控制台.如果你的log4j也正在转储到控制台,你会看到它两次.但是,这看起来像一个log4j格式的日志行,而不是hibernate完成的控制台转储,所以这似乎不太可能.值得一提的是.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有