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查詢語法」。
沒有留言:
張貼留言