Java y JBoss, con el servidor SQL. Mulitple insertar declaraciones en una consulta nativa utilizando EntityManager, que no trabaja; pero funciona en SQL
-
26-09-2019 - |
Pregunta
String myQuery1 = "insert into mytable(mycol) values(myval) \ngo";
String myQuery2 = "insert into mytable(mycol) values(myval2) \ngo";
String myQuery = myQuery1 + myQuery2;
Query query = myEntityManager.createNativeQuery(myQuery);
List<?> insertResultList = queryInsertDefaults.getResultList();
utilizando el depurador eclpise puedo ver la cadena que se utiliza, funciona bien cuando copiar y pegar en SQL Server Management Studio - así que supongo que hay algo que ver con el pesebre entidad que no le gusta múltiples sentencias de línea / go ...
Cualquier consejo recibió con agradecimiento (sí que sé de StringBuilder, etc, etc), y el error que consigo es:
SQL Error: 102, SQLState: S0001
Incorrect syntax near 'go'.
Editar Resulta inserción no es compatible con EntityManager y la clase de consulta. Así que tengo que usar ya sea una declaración preparada o conservar el objeto.
Solución
A partir de la documentación MSSQL: "GO no es una instrucción de Transact-SQL, sino que es un comando reconocido por el sqlcmd y utilidades osql y editor de SQL Server Management Studio Código"
Es por eso que trabaja en SSMS, pero no cuando se envían 'directamente' a la base de datos. Sólo sacarlo de sus estados de cuenta insertarán por completo.