如何使用JPA查询使不区分大小写的PostgreSQL

时间:2017-09-11 14:47:44

标签: java postgresql hibernate jpa

您好我是JPA Criteria构建器概念的新手,我正在使用PostgreSQL和JPA Query。我得到了这个查询SELECT id,full_name,email FROM nurses WHERE(lower(sender)LIKE'%bar%&#39 ;并降低(接收者)LIKE'%bar%')。但是如何将其转换为JPA Criteria构建器。

 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();

1 个答案:

答案 0 :(得分:1)

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

e.g。

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

或者,也可以使你的模式小写:

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