2012-08-30 82 views
3

我有一個應用程序需要在運行時訪問2個模式,並且在部署時需要配置模式名稱,因爲每個部署的名稱不同進行彙編測試,集成測試,性能測試...)如何在JPA /休眠中爲映射的實體/表配置模式名稱

我知道JPA/hibernate可以在@Table註釋中指定模式,但是我需要使模式可配置,是否有添加後處理器/事件偵聽器所以我可以修改hibernate元信息,並使用我的配置更改表格模式?

目前我正在研究重寫我自己的HibernateJpaVendorAdapter/HibernatePersistence,但絕對不是一個好主意。

謝謝。

+0

您的應用程序的一個實例是否只訪問一個模式,或者一個運行實例是否同時訪問兩個不同的模式(例如'liveA'和'liveB')? – Ralph

+0

一個實例需要在一個事務中訪問兩個模式。我不想使用JTA,因爲它太昂貴了,否則我可以使用2個實體管理器並將它們映射到不同的默認模式。 – Jianyu

回答

0

您可能還想調查META-INF/orm.xml文件中的persistence-unit-defaults元素。這使您可以爲持久性單元指定默認模式和目錄。這可能會或可能不會滿足您的需求,具體取決於您如何確定代碼中要訪問的模式。另外請注意,Hibernate已經在這個領域存在多年和數年的bug了。不過,它可能比編寫自定義代碼更好。

+0

如果我可以使用JTA和定義2實體管理器,這應該工作。但是我的環境不允許這樣做。謝謝。 – Jianyu