我正在项目中使用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();
任何建议。我必须像上面的代码一样使用具有特定数据类型的泛型。
提前感谢
答案 0 :(得分:0)
很遗憾,executeUpdate
不允许您使用类型化查询。
相反,您可以使用uniqueResult,并将其强制转换为所需的类型:
Query query = em.createQuery("delete from User where name=:name");
query.setParameter("name", "Zigi");
int deleted = (Integer) query.uniqueResult();