如何通过jpa的entitymanager获取jdbc的connection?

解决方案 »

  1.   

    JPA 2.0
    entityManager.getTransaction().begin();
    java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
    ...
    entityManager.getTransaction().commit();
    ====================================================================
    JPA 1.0
    entityManager.getTransaction().begin();
    UnitOfWork unitOfWork = (UnitOfWork)((JpaEntityManager)entityManager.getDelegate()).getActiveSession();
    unitOfWork.beginEarlyTransaction();
    Accessor accessor = unitOfWork.getAccessor();
    accessor.incrementCallCount(unitOfWork.getParent());
    accessor.decrementCallCount();
    java.sql.Connection connection = accessor.getConnection();
    ...
    entityManager.getTransaction().commit();
      

  2.   

    1.注入EntityManager对象
    2.SessionImplementor session =em.unwrap(SessionImplementor.class);
      session.connection();
    当然也可以用DataSource来获得
    dataSource.getConnection();