AdSense

網頁

2020/11/4

JPA JPQL簡介

JPQL(Java Persistence Query Language)是EJB-QL(Enterprise JavaBeans query language)的擴展,是類似SQL用來查詢JPA實體(entity)的物件導向持久化查詢語法。與SQL不同的是JPQL操作的對象為JPA的entity物件,而非資料庫的資料表,也就是對SQL及底層資料庫的抽象,所以JPQL是可攜的(portable),不會因為底層資料庫或資料表的異動而修改語法。

JPQL受HQL的影響很大是HQL的子集(subset),因此JPQL與法相容於HQL,但HQL不一定相容於JPQL。

JPQL語法與SQL語法類似,支援關聯查詢(join)(要設定entity關聯,乾)、聚合查詢(aggregate)、子查詢(sub query),也有自訂的函式(function)等相映於SQL的語法。

例如查詢全部。

SELECT e FROM Employee e

Inner join查詢。

SELECT e 
FROM Employee e 
INNER JOIN e.department d 
WHERE e.age > 55

Left outer join查詢。

SELECT e 
FROM Employee e 
LEFT OUTER JOIN e.department d 
WHERE e,age < 30

Aggregate查詢。

SELECT MAX(e.age)
FROM Employee e

Group by查詢。

SELECT COUNT(e)
FROM Employee e
GROUP BY e.age

JPQL function。

SELECT e 
FROM Employee e 
WHERE SUBSTRING(e.name, 1, 1) = 'M'

其他簡單的JPQL查詢請參考「JPA JPQL查詢語法」。


沒有留言:

AdSense