当前位置: 首页 > 知识库问答 >
问题:

在Hibernate查询中使用“泛型”时出错

皇甫卓君
2023-03-14

我正在我的项目中使用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:Update/Delete queries Count be typed)。我使用整数数据类型,因为createQuery在执行时返回数字

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

有什么建议吗.我必须像上面的代码那样使用具有特定数据类型的泛型。

提前致谢

共有1个答案

茅星华
2023-03-14

不幸的是,executeupdate不允许您使用类型化查询。

相反,您可以使用uniqueResult并强制转换为所需的类型:

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

引用此答案

 类似资料:
  • 执行获取HQL查询时出现异常。查询大部分时间都有效,但有时会显示此异常 数据库是MySQL,使用的服务器是JBoss 5.1.0 GA 显示的错误是: 组织。冬眠例外GenericJDBCException:无法在组织上执行查询。冬眠例外SQLStateConverter。在组织中处理非特定异常(SQLStateConverter.java:126)。冬眠例外SQLStateConverter。o

  • 嗨,伙计们,我试图检索数据从我的数据库使用HQL编辑器查询。我遵循了示例“在JavaSwing应用程序中使用Hibernate”中的步骤。我的配置文件如下: 映射: 使用这个:或我得到以下错误: org.hibernate.exception.SQLGrammarExcture:无法在org.hibernate.exception.SQLStateConverter.convert(SQLStat

  • UPD:也许它不在规范中,但是最大的/NVL函数可以通过上面的代码从JPQL正确地传递到SQL。我尝试在中包装/,但仍然不接受文字。

  • 我在Spring批处理StepBuilder类中看到了以下方法定义。这里第一个角括号有什么用?

  • 我得到了一些错误,我试图插入一些数据到mysql db中的一个表中,同时也想从另一个表中删除一些数据。我使用的是jsp、JDBC。我不明白为什么我会得到这个错误,这里是我的jsp页面的代码… else{String sql1; library是我的db名,而issue是我的表名

  • 我使用Spring Boot和Hibernate进行空间查询。使用的库:1.Spring引导-2.1.3。发布2.Hibernate空间-5.3.7。最后3。mysql Ver 15.1版本10.1.36 每当我在下面的查询中使用HQL时,我在应用程序启动期间会遇到以下错误,但是当我尝试使用本机查询时,它会起作用。 我试过用不同的方言。此外,还尝试使用columnDefinition,其值为几何体