当前位置: 首页 > 面试题库 >

HQL或Java持久性查询语言中的条款

蔡明贤
2023-03-14
问题内容

我有以下参数化的JPA或Hibernate查询:

SELECT entity FROM Entity entity WHERE name IN (?)

我想将参数作为ArrayList 传递,这可能吗?hibernate电流告诉我,

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String

这有可能吗?

解答 :集合作为参数只能与“ :name” 这样的命名参数一起使用,而不能与“ ”这样的JDBC样式参数一起使用?


问题答案:

您正在使用Hibernate的Query对象还是JPA?对于JPA,它应该可以正常工作:

String jpql = "from A where name in (:names)";
Query q = em.createQuery(jpql);
q.setParameter("names", l);

对于Hibernate,您需要使用setParameterList:

String hql = "from A where name in (:names)";
Query q = s.createQuery(hql);
q.setParameterList("names", l);


 类似资料:
  • 1. 前言 本节课程和大家一起学习 Hibernate 中的 HQL ( Hibernate 查询语言)。通过本节课程的学习,你将了解到: HQL 基础语法; HQL 查询的具体实现。- 2. HQL 查询?前面不是讲过?用过吗? 但是,前面的查询都是简单查询,真实项目中的查询需求要远比这个复杂。仅仅依靠 get()、load() 是远远达不到要求。 Hibernate 提供了灵活多样的查询机制,

  • Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。

  • 和异常: 实体:GirMotiuRebuig 这个标准起作用了:

  • 问题内容: 任何使用条件/ hql / sql告诉我查询的人。要求是用户输入电子邮件或用户名查询从表user返回用户的密码。 问题答案: 如果您正在做的只是获取一个字段,那么您可能只想执行hql(或者可能是sql)。 如果您符合条件,我相信您将撤回整个对象,只是为了最终使用一个字段。 编辑: 这是一个非常广泛的问题。这是一个教程

  • 问题内容: 从此问题派生而来,是否可以对以下SQL语句使用HQL或Criteria: 尽管google提出了一些命中意见,表明HQL支持CASE语句,但是Hibernate 3.6.6失败并显示 QuerySyntaxException:意外令牌:CASE 当我在EntityManager实例上创建上述查询时。 为每个e.type创建另一个查询来手动确定男性人数(例如针对每个e.type)有多少个

  • 当我在IntelliJ IDEA中使用HQL时,它总是突出显示我的Hibernate查询: 我知道如何禁用高亮显示,这里已经描述过了。 但我想知道IntelliJ IDEA中是否支持HQL?有没有办法使用查询自动完成之类的功能? 可能是设置中的一个选项或某个插件。