JPA - 是否有一种方法/方法来检索持久性单元信息

neo*_*neo 3 jpa eclipselink

我想在代码中找到我的数据源名称.有没有办法做到这一点?我正在使用eclipselink.

谢谢更具体,我的目标是获得一个jdbc连接对象.我知道我可以通过以下方式做到这一点:

datasource = (DataSource) (new InitialContext()).lookup("my_data_source_name")
connection = dataSource.getConnection();
Run Code Online (Sandbox Code Playgroud)

但我不想在我的代码中硬编码数据源名称.

我也试过了

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

它总是返回null.

bet*_*r07 7

.unwrap()应该是要走的路,就像EclipseLink wiki中所写的那样.

我也习惯在调用时获取null,em.unwrap(java.sql.Connection.class);因为它不在事务中.当像这样调用时:

em.getTransaction().begin();
java.sql.Connection conn = em.unwrap(java.sql.Connection.class);
// ...
em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)

一切正常!