2009-09-04 22 views
1

在JPA中打開EntityManagerFactory時是否可以看到生成的DDL?我似乎有some problems但沒有錯誤產生。我沒有看到任何類型的日誌文件,並且沒有輸出寫入StdOut或StdErr。我在的src/main /資源log4j.properties:JPA Instrumentation


log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

log4j.rootLogger=debug, stdout 

log4j.logger.org.hibernate=debug 
log4j.logger.org.hibernate.SQL=debug 
log4j.logger.org.hibernate.engine.CascadingAction=debug 
log4j.logger.org.hibernate.tool.hbm2ddl=debug 

我甚至不知道,如果文件被識別。有什麼方法可以找到?我如何更好地洞察Hibernate和/或JPA的行爲?我基本上沒有輸出(除了我的程序中的System.out.println())。

回答

1

嘗試在持久單元中的persistence.xml中添加以下內容。

<properties> 
    <property name="hibernate.show_sql" value="true"/> 
</properties> 

不太確定它是否會給你你正在尋找的信息,但應該給你一些額外的輸出。

+0

感謝。我也試過hibernate.format_sql = true。通過只打開和關閉會話,模式就產生了,但沒有輸出。我真的很難過。 – User1 2009-09-04 15:49:01

0

要找出您的log4j.properties文件是否被拾取,您可以在其中引入一個故意錯誤(例如拼寫錯誤ConsoleAppender類名稱)。如果文件確實被拾取,Log4j應該爆炸或至少在控制檯中顯示錯誤。

至於DDL推移,我使用的是春天,而不是JPA所以YMMV休眠模式,但:

  1. 既不是「hibernate.show_sql」屬性,也不是「org.hibernate.SQL」調試級別有什麼對DDL的影響。如果你使用SchemaExport工具
  2. 設置「org.hibernate.tool.hbm2ddl」爲DEBUG將只打印DDL(如果EntityManagerFactory的內部使用它)。
  3. Hibernate的配置(這是模式創建/更新腳本生成的根入口點)根本不打印腳本。

最好的辦法是看看EntityManagerFactory代碼來找出腳本的執行位置,看看是否有任何日誌記錄正在進行;那麼你就知道你需要在你的log4j.properties

0

不,這解決了第一個問題,以什麼配置包,但我總是添加MYE應用程序的名稱爲.ConversionPattern。這樣我可以儘快查出是否應用更改,並登錄多個應用程序相同的文件

log4j.appender.stdout.layout.ConversionPattern=MyApp1 - %d{ABSOLUTE} %5p %c{1}:%L - %m%n 
相關問題