JPA查询的动态参数数量

时间:2014-08-20 16:05:15

标签: hibernate jpa

如何在运行时为JPA查询提供动态数量的参数?例如,我将JPA查询设置为

String queryString="Select x from Item x WHERE x.itemName=:name AND x.itemLocatio=:location";
Query q=QueryFactory.createQuery(queryString);
q.setParameter("itemName", name);
q.setParamater("itemLocation",location);
List<Item> result=q.getResultList();

如果我只想传递itemName而不想过滤location.what值我需要为位置设置怎么办?如何在可以选择不在运行时为一个或多个字段设置参数的情况下进行此类查询?我通过在运行时检查参数值来完成此操作,但由于查询字符串和参数设置是通过大量if检查创建的,因此代码变得太长。

1 个答案:

答案 0 :(得分:0)

听起来好像你有正确的方法:你需要在运行时构造查询字符串,并包含你想要的元素。

不过,这不应该太麻烦:

if (name!=null)
    queryString += " AND x.itemName=:name";
if (location!=null)
    queryString += ...

然后类似的设置参数。

(根据您的查询数据来源,您可能需要检查它们是否为空,即检查!"".equals(name)而不是name!=null。)