Para poder utilizar JPA, hay que sacar la conexión de un objeto EntityManager. Tenemos nuestro objeto EntityManager, y de él se puede extraer la conexión, siempre que esté dentro de una transacción!
Por ejemplo:
String sql = "la consulta SQL"; EntityManager em = emf.createEntityManager(); //Iniciamos la transacción em.getTransaction().begin(); //Obtenemos el objeto conexión.. Connection con = em.unwrap(java.sql.Connection.class); // Creamos el CachedRowSet CachedRowSet ret = CachedRowSetFactory.getCachedRowSet(); // informamos de la consulta a ejecutar ret.setCommand(sql); // ejecutamos la consulta y tenemos el resultado en el CachedRowSet ret.execute(con); // Cerramos la transacción... em.getTransaction().commit();
Este tipo de solución viene bien cuando hemos de hacer consultas sobre una base de datos, y el resultado no lo podemos asociar a una entidad de nuestro modelo.
Espero que a alguien le sea de utilidad!