如何强制java Hibernate抛出异常而不是记录logj4消息?

如何强制java Hibernate抛出异常而不是记录logj4消息?,java,hibernate,exception,log4j,Java,Hibernate,Exception,Log4j,令人烦恼的是,Hibernate在某些情况下似乎喜欢将日志写入log4j本身。我不想这样。我希望它在出现问题时抛出异常,就像一个好的库一样 有人知道这是否可能,更重要的是,我该如何做到 例如,我得到一个错误级别日志“尝试获取锁时发现死锁;尝试重新启动事务”。如果它至少包含一个堆栈跟踪,或者可能是导致死锁的查询,那就不会那么糟糕了。但事实并非如此,因此调试其中一些案例很困难 我已经浏览了hibernate映射dtd文件、hibernate配置xml文件和hibernate配置dtd文件,但是没有任

令人烦恼的是,Hibernate在某些情况下似乎喜欢将日志写入log4j本身。我不想这样。我希望它在出现问题时抛出异常,就像一个好的库一样

有人知道这是否可能,更重要的是,我该如何做到

例如,我得到一个错误级别日志“尝试获取锁时发现死锁;尝试重新启动事务”。如果它至少包含一个堆栈跟踪,或者可能是导致死锁的查询,那就不会那么糟糕了。但事实并非如此,因此调试其中一些案例很困难

我已经浏览了hibernate映射dtd文件、hibernate配置xml文件和hibernate配置dtd文件,但是没有任何东西可以作为控制日志记录的方法

我在log4j.properties文件中看到以下几行:

# Don't log Hibernate flushing exceptions (usually StaleStateExceptions)
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=FATAL
log4j.logger.org.hibernate.jdbc.AbstractBatcher=FATAL
如果我将某些东西标记为“致命的”,hibernate会引发异常吗


我在冬眠沼泽有点迷路了,所以我想知道一些方向。作为背景,我已经使用hibernate两年了,但我绝对不是这方面的专家。

我们发现hibernate实际上抛出异常,但它也会记录。我们设置了log4j,这样hibernate就不会像我在问题中写的那样记录特定类的异常:

# Don't log Hibernate flushing exceptions (usually StaleStateExceptions)
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=FATAL

我认为hibernate抛出的异常可能被应用程序吞没了。您能否在导致检查此日志消息的hibernate调用周围放置一个try-catch。我们几乎对系统中的所有内容都有一个try-catch,包括导致这些日志的调用。我知道异常是如何工作的。