2012-01-21 20 views
1

我有一個運行在Glassfish Web服務器上的Spring應用程序,我在hibernate查詢中看到一些非常奇怪的行爲。我希望能夠看到查詢及其參數,而不僅僅是'?'佔位符。我該怎麼做呢?Glassfish上的Spring - 獲取Hibernate參數記錄?

我試圖通過管理控制檯進去,添加和服務器配置

  • javax.enterprise.system.std.com.sun.enterprise.server配置以下記錄儀「最詳細」。登錄
  • log4j.logger.org.hibernate.type

我仍然沒有得到參數綁定。

我該怎麼做?

+0

你在hibernate.cfg.xml中設置了「show_sql」,「format_sql」爲true嗎?另外你需要設置log4j爲:'log4j.logger.org.hibernate.SQL = DEBUG'和喜歡。 –

+0

@ringbearer沒有hibernate.cfg.xml - 看起來這個配置是通過glassfish完成的嗎?我真的不知道所有這些部分如何組合在一起說實話,我只知道更新語句正在記錄,但我期望看到的值沒有出現在數據庫中。但關於show_sql,sql被記錄,只是沒有參數 –

回答

0

打開你的Spring bean配置文件。這是您將配置休眠會話工廠的地方(通常會在hibernate.cfg.xml中執行)

查找bean的定義如下性質。請注意,可以在單獨的配置文件中定義這些參數。

<bean id="mySessionFactory" 
class="org.springframework.orm.hibernate3.... 

這是你需要設置屬性show_sqlformat_sql爲true的地方。

此外,找到你的項目的log4j的配置(或GlassFish的控制檯),並介紹以下設置:

log4j.logger.org.hibernate.SQL=debug 
log4j.logger.org.hibernate.type=trace 

更多細節hereherehere

+0

我很欣賞它。所有這些鏈接似乎只是處理休眠而不是Spring + hibernate + glassfish。這種特殊的組合有些奇怪的事情發生。例如,show_sql位於persistence.xml中,搜索「springramework.org.hibernate」不會返回任何內容。此外,在glassfish控制檯中定義的日誌級別通過「最好」變爲「服務器」,並且不會與log4j通常具有的日誌級別相關聯(例如,沒有調試級別) –

+0

根據我的理解,glassfish不使用log4j。如果你的應用程序設置了log4j,你將會更加幸運。您必須通過glassfish中的jvm設置傳遞'-Dlog4j.configuration'參數。 –

+0

down-voter - 爲什麼? –