Hibernate 5.2 Native Query с функцией void Postgresql - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в спящем режиме.У меня есть функция void в PostgreSQL с 10 аргументами (это функция «создать или обновить»), и я хочу использовать ее в своем приложении.

Я прочитал, что выполнение Native Query - самый простой способ.

Итак, я написал этот код:

Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();

String a = "SELECT fun('text', 'text', 12345678987, 'text', 'text', 50, 37500, 133456788, 'text', 2);
session.createNativeQuery(a);

session.getTransaction().commit();
session.close();

Приложение запускается без ошибок, но когда я проверяю базу данных, у меня нет новой записи.

Может кто-нибудь объяснить, что не так?Должен ли я сделать что-то еще с функцией?

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Когда вы вызываете session.createNativeQuery(a), он создаст запрос, но не выполнит его, пока вы не вызовете executeUpdate() метод собственного запроса.

0 голосов
/ 06 мая 2019

When I check database I don't have new rekord Конечно, вы не делаете, вы делаете SELECT, поэтому вы ничего не делаете в своей базе данных.

Также для выполнения вашего запроса вам не нужно открывать какие-либо транзакции, поскольку вы ничего не вставляете / не обновляете / не удаляете, и вам нужно сделать следующее, чтобы получить результат:

session.createNativeQuery(a).getResultList(), если вы ожидаете несколько результатов от этого запроса

session.createNativeQuery(a).getSingleResult(), если вы ожидаете только один результат.

session.createNativeQuery(a).executeUpdate() если вы на самом деле вставляете / обновляете / удаляете что-то, в этом случае вам понадобится транзакция, как вы это делали в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...