【问题标题】:How to make case insensitive PostgreSQL using JPA query如何使用 JPA 查询使 PostgreSQL 不区分大小写
【发布时间】:2017-09-11 14:47:44
【问题描述】:

您好,我是 JPA Criteria builder 概念的新手,我正在使用 PostgreSQL 和 JPA Query。我得到了这个查询 SELECT id, full_name, email FROM Nurses WHERE(lower(sender) LIKE '%bar%' and lower(receiver) LIKE '%bar%')。但是如何将其转换为 JPA Criteria builder。

 entityManager.getTransaction().begin();
            CriteriaBuilder cb = entityManager.getCriteriaBuilder();
            System.out.println(entityManager + " Conected");
            CriteriaQuery<sourceTracking> cq = cb.createQuery(sourceTracking.class);
            Root<sourceTracking> data1 = cq.from(sourceTracking.class);
            cq.where(cb.like(data1.<String>get("sender"), "%"+sender+"%"),cb.like(data1.<String>get("receiver"), "%"+receiver+"%");
            cq.select(data1);
            TypedQuery<sourceTracking> tquery = entityManager.createQuery(cq);
            sourselList = tquery.getResultList();

【问题讨论】:

    标签: java postgresql hibernate jpa


    【解决方案1】:

    CriteriaBuilder.lower() 会做你想做的事。

    例如

    cb.like(cb.lower(data1.get("sender")), "%" + sender + "%")
    

    或者,让你的模式也小写:

    cb.like(cb.lower(data1.get("sender")), cb.lower(cb.literal("%" + sender + "%")))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多