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

Hibernate中带有命名查询的可选参数?

万俟玉书
2023-03-14
问题内容

使用Hibernate时,有什么方法可以在命名查询中指定可选参数(例如,从表单提供搜索参数而并非所有参数都是必需的)?我正在使用本机SQL查询,但该问题可能也适用于命名HQL查询。

我很确定对此的答案是“否”,但是我还没有在文档中找到确切的答案。


问题答案:

AFAIK,没有这样的事情,因此您必须为此编写一个动态查询。也许看一下以前的答案,该答案显示了如何在HQL中执行此操作(您可以将其转换为SQL),还显示了Criteria
API如何使其更简单并因此更适合此工作。

更新:(
回答来自OP的评论)使用Hibernate处理旧数据库确实很棘手。也许您可以使用动态本机查询并返回非托管实体。但是从长远来看,情况可能会变得更糟(我不能告诉你)。也许Hibernate不是您的最佳选择,而iBATIS之类的东西可能会为您提供所需的灵活性。



 类似资料:
  • 我有一个在 XML 配置中定义的Hibernate命名查询。 查询会生成一个关于个人人口统计信息的汇总报告。我们住在哪里,那个人可能住在一个省或一个县。 我想知道是否有可能根据hibernate查询参数,按省或县聚合查询。 这是我尝试过的: 参数名称为:groupReportBy。如果我硬编码“省”而不是参数名称,则此查询将起作用,但如果我按照上面显示的方式运行它,则会出现以下错误: 我从Java

  • 在下面的代码中,我有时会将设置为null。此时,它抛出错误为“could not extract resultset;SQL[n/a];嵌套异常为org.hibernate.exception.sqlgrammarexception:could not extract resultset” 即使为空,我如何获取数据。总有一天约会就要来了。这是怎么做的? null

  • 错误:运算符不存在:uuid=bytea 有什么建议吗?

  • 问题内容: 谁能指出我如何将order by子句作为命名参数传递给HQL? 有效的示例: 无效的示例: 问题答案: 不支持,只能在and 子句中使用输入参数,并且不能为子句使用参数。或者,如果我改写,您不能对列使用参数,只能对值使用。因此,要么: 有尽可能多的命名查询排序顺序 将排序字符串连接到查询字符串 使用条件查询

  • 问题内容: 我对Hibernate Native Query有问题。我有一个选择,它选择数组切片(PostgreSQL数据库)。 问题在于hibernate状态识别以下部分:来自“ SELECT my_array [1:300] …”的“:300”作为命名参数,并且我得到以下异常:尚未设置所有命名参数。 我试图用’:’,’::’逃脱冒号(:),但没有成功。 Hibernate版本是3.2 问题答案