HQL 变量过滤个案

HQL variables Filter cases

如何更新我的代码以接受过滤器 HQL 4 变量过滤案例 让 x , y , z ;

{

select data from my table  
where   x = :x And y = :y And z =:z
}
if send x , y , z is NULL > 
{
select data from my table


}

如何编辑这个

或发送 x , y NULL

{
select data from my table  
where   x = :x And y = :y  
}

总结:如何做动态select花蕊。 采用 : 1.spring开机 2.JPA 3.hibernate 3.HQL

您可以使用以下技巧:

SELECT data
FROM my_table
WHERE (:x IS NULL OR x = :x)
  AND (:y IS NULL OR y = :y)
  AND (:z IS NULL OR z = :z)

注意检查: :x IS NULL 它将检查传递的参数值是否为空。

例如,如果您遇到这种情况:

X       Y          Z
null    not null   not null

您的查询等同于:

SELECT data FROM my_table WHERE AND y = :y AND z = :z

忽略X的检查。