JPA - 有没有办法/方法来检索持久性单元信息

标签 jpa eclipselink

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

谢谢 更具体地说,我的目标是获取一个 jdbc 连接对象。 我知道我可以做到这一点:

datasource = (DataSource) (new InitialContext()).lookup("my_data_source_name")
connection = dataSource.getConnection();

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

我也试过了

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

它总是返回 null。

最佳答案

.unwrap() 应该是要走的路,如 EclipseLink wiki 中所写.

我也曾经在调用 em.unwrap(java.sql.Connection.class); 时得到 null,因为它不在事务中。当这样调用时:

em.getTransaction().begin();
java.sql.Connection conn = em.unwrap(java.sql.Connection.class);
// ...
em.getTransaction().commit();

一切正常!

关于JPA - 有没有办法/方法来检索持久性单元信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046491/

相关文章:

java - Hibernate 相当于 EclipseLink 的批量查询提示?

java - 使用EclipseLink Modelgen处理器和Spring Security时如何解决CompletionFailure?

database - 使用 JPA 时避免来自数据库的陈旧数据?

java - 从 JSON moxy 输出重命名 "type"

java - 无法在 Glassfish 上部署我的项目

java - hibernate 零对一

java - 在 hibernate 中查询一对多映射

java - 数据转换错误转换

java - 检索 JPA 实体列表和元数据

java - 枚举不是枚举映射的有效类型