当前位置: 首页 > 知识库问答 >
问题:

具有多个参数的JPA标准API

宁侯林
2023-03-14
Criteria criteria = session.createCriteria(someClass.class);
if(someClass.getName() != null) {
   criteria.add(Restrictions.like("name", someClass.getName());
}

共有1个答案

西门马鲁
2023-03-14

概念是构造javax.persistence.predicate的数组,它只包含我们想要使用的谓词:

要查询的实体示例:

@Entity
public class A {
    @Id private Long id;    
    String someAttribute;
    String someOtherAttribute;
    ...
}

查询本身:

    //some parameters to your method
    String param1 = "1";
    String paramNull = null;

    CriteriaBuilder qb = em.getCriteriaBuilder();
    CriteriaQuery cq = qb.createQuery();
    Root<A> customer = cq.from(A.class);

    //Constructing list of parameters
    List<Predicate> predicates = new ArrayList<Predicate>();

    //Adding predicates in case of parameter not being null
    if (param1 != null) {
        predicates.add(
                qb.equal(customer.get("someAttribute"), param1));
    }
    if (paramNull != null) {
        predicates.add(
                qb.equal(customer.get("someOtherAttribute"), paramNull));
    }
    //query itself
    cq.select(customer)
            .where(predicates.toArray(new Predicate[]{}));
    //execute query and do something with result
    em.createQuery(cq).getResultList();
 类似资料:
  • 问题内容: 我需要制作一个使用JPA Criteria API和多个参数的搜索方法。现在的问题是,并非每个参数都是必需的。因此某些可能为null,因此不应将其包含在查询中。我已经使用CriteriaBuilder进行了尝试,但看不到如何使其工作。 使用Hibernate Criteria API,这相当容易。只需创建条件,然后添加限制。 如何使用JPA的Criteria API达到相同的目的? 问

  • 问题内容: 我正在编写一个程序,该程序检查方法的参数数量并打印警告消息(它是一个代码编码程序)。如果标准不止于此,问题是我不知道协议编号是多少。我环顾四周,没有任何运气。谁能告诉我或至少指向我正确的方向? 问题答案: 您可以在Java中指定的参数数量没有标准限制,但是根据 “代码完成” (请参阅此文章),您应该将参数数量限制为7个左右,这会对参数产生负面影响。您代码的可读性。

  • 问题内容: 我有一个源输入 input.txt 我想将这些输入馈入程序,如下所示: 所以我尝试使用 xargs ,但是没有运气。 它给 但我想要 任何的想法? 问题答案: 到目前为止给出的解决方案都无法正确处理包含空格的文件名。如果文件名包含“或”,有些甚至会失败。如果输入文件是由用户生成的,则应该准备好使用令人惊讶的文件名。 GNU Parallel 很好地处理了这些文件名,并为您(至少)提供了

  • 因此,为了提供搜索功能,我可以进行多个连接。我开始使用带有@query表示法的JPQL,但我必须对每个参数进行检查,结果一团糟。我开始研究其他选项,我看到了关于QueryDSL、标准和规范的东西,但我不确定我应该关注和学习哪一个。不幸的是,我不知道很多关于这个主题,我希望有人能指出我在正确的方向,以一个很好的实现这个搜索。谢谢!

  • 我有一个对象数组: 联系类: 我想按然后按对该数组进行排序,以防某些联系人获得相同的。 我可以按其中一个标准排序,但不能两个都选。 如何添加更多条件来对此数组进行排序?