在我的应用程序中,我应该知道,我使用的是哪个数据库驱动程序。 这可能是另一种情况。 (H2或Postgres)
有没有办法检查它是否是H2?因为H2没有相同的表格。
欢呼声 K.Hunn
答案 0 :(得分:0)
这是可能的,但我不太确定它是否可以解决任何问题。
您可以从java.sql.Connection
获取驱动程序名称,如:
conn.getMetaData().getDriverName();
或
conn.getMetaData().getDriverVersion();
但是:这里棘手的部分是如何获得连接,因为它是JPA提供商特定的东西。以下是OpenJPA的用法:
首先,您需要解包(=特定于实现)实体管理器:
OpenJPAEntityManager unWrappedEm = OpenJPAPersistence.cast(em);
所以你必须知道它是什么。之后,您可以获得这样的连接(仍在OpenJPA中):
Connection conn = (Connection)unWrappedEm.getConnection();
来自javadoc
方法EntityManager
<T> T unwrap(java.lang.Class<T> cls)
返回指定类型的对象以允许访问 特定于提供者的API。如果提供者的EntityManager实现 不支持指定的类,PersistenceException是 抛出。