【问题标题】:Dynamic number of parameters for a JPA queryJPA 查询的动态参数数量
【发布时间】:2014-08-20 16:05:14
【问题描述】:

如何在运行时为 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 上进行过滤,那我需要为 location 设置什么值呢?在我们可以选择在运行时不为一个或多个字段设置参数的情况下,如何进行此类查询?我通过在运行时检查参数值来做到这一点,但是由于查询字符串和参数设置是通过大量 if 检查创建的,因此代码变得太长。

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

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

    不过应该​​不会太麻烦:

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

    然后是类似的设置参数。

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

    【讨论】:

    猜你喜欢
    • 2021-12-06
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多