Java 获取连接用于连接数据库的url
我正在尝试获取连接用于连接数据库的url,如下所示:Java 获取连接用于连接数据库的url,java,hibernate,jpa,Java,Hibernate,Jpa,我正在尝试获取连接用于连接数据库的url,如下所示: getEntityManager().unwrap(SessionImplementor.class).connection().getMetaData().getURL(); 但我得到了这个错误: java.lang.IllegalStateException: No transactional EntityManager available 我怎样才能解决这个问题 编辑: 我不明白为什么这个问题被认为是复制到Hibernate解决方案
getEntityManager().unwrap(SessionImplementor.class).connection().getMetaData().getURL();
但我得到了这个错误:
java.lang.IllegalStateException: No transactional EntityManager available
我怎样才能解决这个问题
编辑:
我不明白为什么这个问题被认为是复制到Hibernate解决方案中的,我使用的是JPA,所以我尝试使用
entityManager
而不是sessionFactory
获取url是Hibernate表单,那么您使用的是哪种JPA实现呢?解决方案是添加@Transactional
注释。看看这个问题:@R.Daumann的可能重复是如何重复的?正如您所看到的,我使用的是entityManager
而不是sessionFactory
,因此我尝试使用JPA而不是Hibernate获取url,这就是为什么我使用unwrap
来允许访问特定于提供商的API!!!我使用的是Hibernate,但我没有访问sessionFactory的权限,除非我使用getEntityManager().unwrap(SessionImplementor.class)
,这会引发错误:No transactional EntityManager available
是否可以尝试获得如下连接:em.getTransaction().begin();java.sql.Connection conn=em.unwrap(java.sql.Connection.class);/。。。em.getTransaction().commit()代码>