如何在JPA中以编程方式了解数据库类型?

时间:2013-12-17 08:43:31

标签: java jpa eclipselink

是否有可能以编程方式知道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
....

1 个答案:

答案 0 :(得分:5)

我从来不需要它,但我认为要走的路是获取JDBC connection并在其属性中找到这条信息。特别是getClientInfo()getMetaData()可能会很有趣。

这可能是特定于实现的,但正如您所说的使用EclipseLink,您可以使用以下内容:

java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);

Reference from here.

PS:我想你想解决一个有问题的问题。