Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取连接用于连接数据库的url_Java_Hibernate_Jpa - Fatal编程技术网

Java 获取连接用于连接数据库的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解决方案

我正在尝试获取连接用于连接数据库的url,如下所示:

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()