使用Hibernate时,有什么方法可以在命名查询中指定可选参数(例如,从表单提供搜索参数而并非所有参数都是必需的)?我正在使用本机SQL查询,但该问题可能也适用于命名HQL查询。
我很确定对此的答案是“否”,但是我还没有在文档中找到确切的答案。
AFAIK,没有这样的事情,因此您必须为此编写一个动态查询。也许看一下以前的答案,该答案显示了如何在HQL中执行此操作(您可以将其转换为SQL),还显示了Criteria API如何使其更简单并因此更适合此工作。
更新:( 回答来自OP的评论)使用Hibernate处理旧数据库确实很棘手。也许您可以使用动态本机查询并返回非托管实体。但是从长远来看,情况可能会变得更糟(我不能告诉你)。也许Hibernate不是您的最佳选择,而iBATIS之类的东西可能会为您提供所需的灵活性。