Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

554
Vistas
Cómo construir una consulta de inserción en JPA

Estoy tratando de insertar datos en una tabla que tiene columnas (NOMBRE, VALOR) con

 Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (:name, :value)"); query.setParameter("name", name); query.setParameter("value", value); query.executeUpdate();

y obteniendo la siguiente excepción:

 ERROR org.hibernate.hql.internal.ast.ErrorCounter - line 1:42: unexpected token: VALUES

Además, tampoco puedo insertar un registro usando una consulta nativa:

 Query query = em.createNativeQuery("INSERT INTO TEST_DATA (NAME, VALUE) VALUES (:name, :value);"); query.setParameter("name", name); query.setParameter("value", value); query.executeUpdate();

Se está lanzando otra excepción:

 javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement

La pregunta es:

  • ¿Qué está mal con la cadena de consulta?

Muchas gracias.

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Resolví el problema.

Según esto ,

No hay declaración INSERT en JPA.

Pero podría resolver el problema con una consulta nativa: por error puse un redundante; al final de la consulta, por lo que el problema se resolvió eliminándolo.

about 4 years ago · Santiago Trujillo Denunciar

0

Encontré dos ejemplos en los que el autor usa la inserción en una consulta nativa ( primero y segundo ). Entonces, tu consulta podría ser:

 Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (?, ?)"); query.setParameter(1, name); query.setParameter(2, value); query.executeUpdate();

Prueba esto.

about 4 years ago · Santiago Trujillo Denunciar

0

Pude hacer esto usando lo siguiente: solo tenía un nombre de tabla Bike con 2 campos de identificación y nombre. Utilicé lo siguiente para insertar eso en la base de datos.

 Query query = em.createNativeQuery("INSERT INTO Bike (id, name) VALUES (:id , :name);"); em.getTransaction().begin(); query.setParameter("id", "5"); query.setParameter("name", "Harley"); query.executeUpdate(); em.getTransaction().commit();
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda