嘿傢伙們,我的目標是創建一個EntityManager使用屬性取決於哪個數據庫正在使用。我見過這樣的事情在我所有的谷歌搜索做了(我使代碼更基本的對這個問題的目的):使用EntityManagerFactory導致重複的主鍵異常
@PersistenceUnit
private EntityManagerFactory emf;
private EntityManager em;
private Properties props;
@PostConstruct
public void createEntityManager(){
//if oracle set oracle properties else set postgres properties
emf = Persistence.createEntityManagerFactory("app-x");
em = emf.createEntityManager(props);
}
這工作,我可以成功加載Oracle或Postgres的性質,我可以選擇來自任一數據庫。不過,我在做INSERT語句時遇到了問題。每當INSERT完成時,我每次都會得到一個重複的主鍵異常!任何人都可以闡明爲什麼會發生這種情況?由於 -Brad
我的最終目標是讓我的應用程序檢測正在使用哪種類型的數據庫(在glassfish中設置)並相應地設置EntityManager。我的研究指出使用EntityManagerFactory是最好的方法。你怎麼看? – bradd 2010-03-10 18:47:51
@bradd爲什麼你的應用需要檢測數據庫?你能詳細解釋一下嗎? – 2010-03-10 18:58:34
我們的目標是讓我們的客戶能夠將glassfish配置爲使用postgres或oracle,而不必擔心修改persistence.xml文件。我們也希望遠離爲不同數據庫創建不同版本的應用程序。 – bradd 2010-03-10 19:43:38