Как выполнить собственный запрос и получить обратную связь? - PullRequest
0 голосов
/ 21 января 2020

Как выполнить собственный запрос (создать таблицу) в java, а также получить информацию о том, была ли операция успешной или нет. Каждый метод, который я пробовал, всегда работает одинаково. Запрос работает, но я получаю ошибки о том, «насколько плох этот запрос был», но, как я уже сказал, он работает.

try{
      session.createNativeQuery("create table test (id number)").getResultList()
}
catch(Exception e){
    // I am getting error "Could not extract result set metadata"
    // Is there any way to execute getResultList() only if operation was select?
}

Подводя итог, мне нужно выполнить CRUD.
1. Если "select" был выполнен, мне нужен resultList.
2. Если "create" я не хочу выполнять getResultSet ()
3. Если была выполнена вставка, мне нужна информация о количестве затронутых строк.
et c ... ... ...
И самое главное, мне всегда нужна информация о возможных ошибках! Если в запросе отсутствует синтаксис или что-то еще, мне всегда нужно получить эту информацию.

Ребята, кто-нибудь может мне помочь? Я борюсь с этим уже несколько дней ...

1 Ответ

1 голос
/ 21 января 2020

Простой пример использования Native Query. Вы можете определить результат запроса по значению affected rows.

        EntityTransaction entityTransaction;
        EntityManager entityManager;

        try
        {
            entityTransaction = entityManager.getTransaction();

            entityTransaction.begin();

            // rowsUpdated - The number of "affected rows".
            int rowsUpdated = entityManager.createNativeQuery("create table test (id nubmer)").executeUpdate();

            entityTransaction.commit();
        }
        catch (HibernateException | IllegalStateException e)
        {
            // handle exceptions

            if (entityTransaction != null && entityTransaction.isActive())
            {
                entityTransaction.rollback();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...