2016-04-29 5 views
3

私のMySQLでSHOW GLOBAL STATUSを調べると、Com_selectCom_show_warningsは多かれ少なかれ等しいことがわかります。つまり、Hibernateは実行するクエリごとにSHOW WARNINGSを実行します。これを無効にする方法はありますか?/HibernateとCom_show_warnings == Com_select in MySQL

+0

あなたはどのようなロガーライブラリを使用しましたか? [この投稿](https://plumbr.eu/blog/io/how-we-accidentally-doubled-our-jdbc-traffic-with-hibernate)を見て、 'org.hibernate'のログレベルをエラーを表示し、 'SHOW WARNING'がまだ実行されているかどうかを確認してください。 – xsalefter

+0

Log4J。私はすでに 'log4j.logger.org.hibernate = info'を持っています。これらはこれらの呼び出しを取り除くのに十分なはずです。彼らはまだ起こる。 –

+1

'log4j.logger.org.hibernate = error'を試しても、問題がまだ存在するかどうか確認しましたか?たぶんあなたの 'log4j.properties'と' hibernate.cfg.xml'や 'persistence.xml'を入れれば、あなたの実際の問題を他人に見分けることができます。 – xsalefter

答えて

2

以上に設定した場合、休止状態でSHOW WARNINGSを使用するように強制します。

これは、そのコードの一部です:

public void handleAndClearWarnings(
     Connection connection, 
     WarningHandler handler) { 
    try { 
     /* This is the real method that causing the problem. */ 
     walkWarnings(connection.getWarnings(), handler); 
    } 
    catch (SQLException sqle) { 
     // workaround for WebLogic 
     LOG.debug("could not log warnings", sqle); 
    } 
    try { 
     // Sybase fail if we don't do that, sigh... 
     connection.clearWarnings(); 
    } 
    catch (SQLException sqle) { 
     LOG.debug("could not clear warnings", sqle); 
    } 
} 

このように、実行されますwalkWarnings()方法を避けるために、あなたはerrorlog4j.logger.org.hibernateレベルを変更しようとすることができます。