2010-10-27 29 views
0

我將當前的persistence.xml表生成策略設置爲創建。這保證了我的應用程序的每個新安裝都會得到這些表,但這也意味着每次啓動它的應用程序都會受到eclipselink異常的影響,試圖創建已經存在的表。 我希望的策略是隻在他們不在時創建表格。對我來說,實現這個的一種方法是檢查數據庫文件,如果不使用不存在創建表:我可以實施if-new-create JPA策略嗎?

ServerSession session = em.unwrap(ServerSession.class); 
SchemaManager schemaManager = new SchemaManager(session); 
schemaManager.createDefaultTables(true); 

但有一個清潔的解決方案?可能是一種嘗試抓住的方式?對於我來說,在catch執行上面的代碼時,用try-catch來保護每個數據庫方法是個錯誤,但我期望它是一個可以配置emf的屬性。

回答

1

表創建問題應只記錄在警告級別。因此,您可以通過將日誌級別設置爲高於警告級別來過濾這些設置,或者創建一個單獨的EM,以反映實際應用程序EM僅用於創建表格,但日誌完全關閉。

至於從createDefaultTables捕獲異常 - 應該沒有。 createDefaultTables的內部包裝了實際的createTable部分,並忽略了它可能拋出的錯誤。因此,由於日誌級別包括警告消息,異常僅顯示在日誌中。你可以將它封裝在try/catch中,並將會話日誌級別設置爲off,然後在finally塊中重置它。