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

Zaw*_* oo 3 java jpa eclipselink

是否有可能通过编程方式知道在JPA中使用哪个数据库服务器?我认为,有一种方法,否则,JPA不能转换JPQLnative query在运行时.我的程序也需要知道DB Server Type.该功能有什么功能吗?

我用eclipseLink&jpa 2.0

我的预期计划是:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA");
String dbPlatform = emf.getDBPlatform();
System.out.println(dbPlatform);
Run Code Online (Sandbox Code Playgroud)

输出:

Oracle
MySql
MSSql
DB2
....
Run Code Online (Sandbox Code Playgroud)

And*_*i I 5

我从来不需要它,但我认为要走的路是获取JDBC连接并在其属性中查找该信息.特别是getClientInfo()getMetaData()可能很有趣.

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

java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
Run Code Online (Sandbox Code Playgroud)

从这里参考.

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