Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
JPA实体管理工厂_Jpa_Hibernate Entitymanager - Fatal编程技术网

JPA实体管理工厂

JPA实体管理工厂,jpa,hibernate-entitymanager,Jpa,Hibernate Entitymanager,我在我的项目中使用jpa。但我必须调用all方法,并且永远不要连接到数据库。我想用entitymanagerfactory和其他想要使用的方法连接once数据库。我使静态entitymanager工厂和entitymanager因此ı产生一个错误,即事务处于活动状态 如何公开与jpa的连接?因为我怀疑稍后还会有其他问题,我建议您按照下面的说明制作Java SE jpa应用程序。更完整的基础教程主要介绍Sun自己的工具集和组件,但基础基础知识和示例代码可能会对您有所帮助 不管怎么说,开头是这样的:

我在我的项目中使用jpa。但我必须调用all方法,并且永远不要连接到数据库。我想用entitymanagerfactory和其他想要使用的方法连接once数据库。我使静态entitymanager工厂和entitymanager因此ı产生一个错误,即事务处于活动状态


如何公开与jpa的连接?

因为我怀疑稍后还会有其他问题,我建议您按照下面的说明制作Java SE jpa应用程序。更完整的基础教程主要介绍Sun自己的工具集和组件,但基础基础知识和示例代码可能会对您有所帮助

不管怎么说,开头是这样的:

public static void main(String[] args) {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenceUnitName");
    EntityManager em = emf.createEntityManager();

    // let's start a transaction, everything we do from here on can be either
    // committed or rolled back, ensuring the integrity of our data
    em.getTransaction().begin();
    // update the database here


    // okay, done
    em.getTransaction().commit();

    // and housekeeping, close em an emf
    em.close();
    emf.close();
}


如您所见,em和emf都不必是静态的。如果您(应该)在对象中细分项目,您可以将
em
传递给这些对象,这些对象将使用它与数据库交互。此外,您不仅限于拥有一个跨越应用程序整个生命周期的大型事务,还可以拥有几个连续的事务。

OK。我用if(!em.gettransaction.isActive()解决了这个问题。感谢您的帮助使用JTA而不是本地资源。