項目中碰到了一個比較棘手的查詢操作,封裝的各種方法都用不上,于是隻能動态生成查詢語句後再做查詢,結果生成的是sql語句在Repository層面方法中作為形參傳入,結果發現根本不行,于是改用生成JPQL語句用EntityManager建立Query進行查詢,方法如下:
首先注入
@PersistenceContext
private EntityManager entityManager;
導包如下
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
然後
Query query2 = entityManager.createQuery(sql2);//sql2為動态生成的查詢語句,一定要遵循JPQL規範,不是sql
query2.setFirstResult(start);//分頁用起點
query2.setMaxResults(size);//分頁用記錄條數
List<Object[]> lists2 = query2.getResultList();//查詢結果輸出
這樣查詢就完成了,如果遇到傳回前台的值沒有key,或者其他問題,可以看我上篇文章!