Выполнение команды 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();
Другие вопросы по тегам