Necesito crear una nueva tabla en una base de datos que acceda a través de un JPA EntityManager. ¿JPA NativeQueries admite consultas que no sean "Seleccionar" o "Actualizar"? ¿O hay otra forma avanzada de ejecutar una consulta SQL compleja en un contexto JPA?Ejecutar una consulta Create Table a través de JPA EntityManager
Respuesta
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.
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.
- 1. Hibernate JPA create table type = Problema InnoDB
- 2. JPA EntityManager, ¿cómo funciona?
- 3. create table en postgreSQL
- 4. Error de sintaxis al ejecutar un MySQL CREATE TABLE
- 5. phpMyAdmin y SHOW CREATE TABLE
- 6. JPA EntityManager ¿Estático o Instancia?
- 7. Linq to SQL create table
- 8. create table constraint in mysql
- 9. Invalidación de la sesión de JPA EntityManager
- 10. 1064 error en CREATE TABLE ... TYPE = MYISAM
- 11. Entidad de actualización utilizando EntityManager JPA EclipseLink
- 12. La operación de eliminación de JPA entitymanager no se realiza
- 13. Cómo ejecutar una consulta JPA en juego Framework
- 14. Lenguaje de consulta JPA criteriaBuilder
- 15. JPA EntityManager find with case sensitive key
- 16. ¿Consulta recursiva de JPA?
- 17. Cómo inyectar JPA EntityManager utilizando la primavera
- 18. Java: genera el código CREATE TABLE de una tabla existente
- 19. Generar scripts CREATE TABLE utilizando Management Studio
- 20. ¿Son los objetos de consulta de JPA devueltos por un EntityManager reutilizable?
- 21. Inyectando Entitymanager a través de XML y no anotaciones
- 22. Información transitoria de JPA perdida en create
- 23. Cómo optimizar una consulta JPA
- 24. ¿Cómo implementar el método update() en DAO usando EntityManager (JPA)?
- 25. Unir dos tablas no relacionadas usando JPA EntityManager
- 26. PostgreSQL: ¿Puedes crear un índice en la definición CREATE TABLE?
- 27. Hibernate Consulta de JPA OneToOne a pesar de Lazy Fetch
- 28. ¿Cómo puedo detectar si tengo el permiso CREATE TABLE?
- 29. "Rutina de biblioteca llamada fuera de secuencia" sqlite3_prepare_v2 (CREATE TABLE)
- 30. base de datos de H2 CREATE TABLE con la restricción