Выполнение команды SQL с EntityManager
Можно ли запустить сценарий SQL, который не возвращает resultSet, или это не сценарий типа INSERT или UPDATE?
Я пытаюсь следующее:
Query q = entityManager.createNativeQuery("DECLARE @max int;\n" +
"SELECT @max = MAX(customer_number)+1\n" +
"FROM organisation\n" +
"\n" +
"exec('ALTER SEQUENCE organisation_customer_number_seq RESTART WITH ' + @max)");
... но, конечно, это просто создает запрос, как его выполнить? Я могу найти только геттеры для разных типов resultSets и метод executeUpdate для Query. Как просто выполнить запрос, который я создал выше, чтобы перезапустить последовательность?
1 ответ
Некоторые из методов, которые вы видите в Query
фактически выполнить запрос, например Query.getResultList:
getResultList ()
Выполните запрос SELECT и верните результаты запроса в виде нетипизированного списка.
List<Object[]> results = q.getResultList();
ОБНОВЛЕНИЕ: в вашем случае запрос заканчивается ALTER
так как вы поняли, соответствующий метод будет executeUpdate()
который возвращает не список или значение, а количество затронутых строк.
int executeUpdate ()
Выполните обновление или удаление оператора.
int altered = q.executeUpdate();