我遇到了一个问题:如何在查询中使用IN子句将参数传递给HQL以获取配对值,如 -
select id, name from ABC where (id, reg_date) in ('x', 'y')
。并且参数具有不同的数据类型字符串(id)和reg_date(日期)。
现在,在HQL中我可以写:
hql = "select id, Name from ABC where (id, date) in (:listparam1)"
hibernateTemplate.findbynamedparam(hql, "listparam1", values).
问题:如何在HQL中传递id和日期对的列表?这两个参数都有不同的数据类型:一个是String
,另一个是Timestamp
。我尝试了Map
和Object
,2维数组中两个值的连接,但没有任何效果。
答案 0 :(得分:0)
select a.id, a.name from ABC a where a.id || '.' || a.date in (:id_date)
....你需要传递参数“id_date”的串联id和名称字符串的集合。如果性能是一个障碍,您可以在完成相同工作的SQL数据库上创建函数索引(当然,如果您的数据库支持函数索引)
答案 1 :(得分:-1)
您可以通过下一步方式实施:
hql = "select a.id, a.Name from ABC a where a.id in (:listid) or a.date in (:datelist)"
或
hql = "select a.id, a.Name from ABC a where a.id in (:listid) and a.date in (:datelist)"
无论结果必须满足什么条件