是否有可能通過編程方式知道哪個數據庫服務器在JPA中使用?我認爲,有一種方法,否則,JPA無法在運行時將JPQL
轉換爲native query
。我的程序也需要知道DB Server Type
。該功能是否有任何功能?如何在JPA中以編程方式知道數據庫類型?
我用eclipseLink
& jpa 2.0
我預期的計劃是:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA");
String dbPlatform = emf.getDBPlatform();
System.out.println(dbPlatform);
輸出:
Oracle
MySql
MSSql
DB2
....
JPA可以轉換JPQL,因爲您在使用的JPA實現中指定了數據庫方言(例如,在Hibernate中的「persistence.properties」中)。我不認爲有辦法可靠地找出你連接的數據庫類型。 –
爲什麼你需要這些信息?如果你描述你的用例得到這些信息將不是必需的。我想有一種方法(eclipseLink必須與一些* JDBC驅動程序交談,你可以挖掘鏈接存儲的位置,並告訴它它是什麼類型)。 – mabi
@mabi,我需要在運行時創建一個本地查詢,如果我不知道數據庫類型,我該如何創建本機查詢。 – CycDemo