【发布时间】:2013-12-17 08:43:30
【问题描述】:
是否有可能以编程方式知道 JPA 中使用了哪个数据库服务器?我认为,有一种方法,否则 JPA 无法在运行时将 JPQL 转换为 native query。我的程序也需要知道DB Server Type。该功能有什么功能吗?
我使用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 必须与 some JDBC 驱动程序对话,您可能会挖掘该链接的存储位置并让它告诉您它是什么类型)。
-
@mabi,我需要在运行时创建一个原生查询,如果我不知道数据库类型,我该如何创建原生查询。
-
@CycDemo:为什么您需要在运行时创建本机查询?如果您描述了您要解决的根本问题,人们可以帮助您解决该问题。 (可能带有本机查询,也可能没有。)
-
@T.J.Crowder,我想通过使用原生查询来解决这个问题stackoverflow.com/questions/20625953/…。
标签: java jpa eclipselink