2011-05-26 20 views

Respuesta

7

Las "consultas nativas jpa" solo se pueden usar para declaraciones DML (lenguaje de manipulación de datos). Para emitir cualquier DDL, como crear una tabla, deberá obtener la conexión subyacente de EntityManager.

La manera de extraer la conexión del EM dependerá de la implementación de JPA que esté utilizando, pero definitivamente incluirá la invocación de EntityManager.getDelegate().

Alternativamente (y creo que es un mejor enfoque), inyecte el DataSource o un JDBCTemplate si está utilizando la primavera para el objeto que intenta crear la tabla, y use esa clase para crear la tabla.

0

APP (al menos Hibernate) puede dejar de ejecutar instrucciones DDL directamente utilizando createNativeQuery() y executeUpdate() de la siguiente manera:

EntityManager em = ...; 
em.createNativeQuery("CREATE TABLE FOO (FOO_ID NUMBER)").executeUpdate(); 
em.createNativeQuery("DROP TABLE FOO").executeUpdate(); 

No es lo ideal, pero puede hacerlo.

Cuestiones relacionadas