2017-09-11 61 views
0

您好我是JPA Criteria生成器概念的新手,我使用PostgreSQL和JPA Query.I獲得此查詢SELECT id,full_name,email FROM nurses WHERE(lower(sender)LIKE' %bar%'和lower(receiver)LIKE'%bar%'),但是如何將其轉換爲JPA Criteria構建器。如何使用JPA查詢使大小寫不敏感PostgreSQL

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

回答

0

CriteriaBuilder.lower()會做你想做的。

例如

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

,或者讓你的模式小寫太:

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