Получение ошибки при использовании «Generics» в Hibernate Query - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Hibernate в своем проекте и использую «Запрос», как показано ниже.

Query query = em.createQuery("delete from User where name=:name");
query.setParameter("name", "Zigi");
int deleted = query.executeUpdate();

Я получаю результат.Когда я использую дженерики, как показано ниже

Query<?> query = em.createQuery("delete from User where name=:name");
query.setParameter("name", "Zigi");
int deleted = query.executeUpdate();

, получаю результат, потому что "?"является чем-то вроде подстановочного знака (или), он примет любой тип данных

, когда я использую код, как показано ниже, получая некоторую ошибку (java.lang.IllegalArgumentException: запросы на обновление / удаление не могут быть набраны).Я использую тип данных Integer, потому что возвращаемое число createQuery при его выполнении

Query<Integer> query = em.createQuery("delete from User where name=:name", Integer.class);
query.setParameter("name", "Zigi");
int deleted = query.executeUpdate();

Любые предложения.Я должен использовать Generics с определенным типом данных, как в приведенном выше коде.

заранее спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

К сожалению executeUpdate не позволяет использовать типизированный запрос.

Вместо этого вы можете использовать uniqueResult и привести к желаемому типу:

Query query = em.createQuery("delete from User where name=:name");
query.setParameter("name", "Zigi");
int deleted = (Integer) query.uniqueResult();

Ссылка этот ответ

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