5. 副問い合わせ
SELECT emp
FROM Employee emp
WHERE emp.salary > [ALL,ANY,SOME] (
SELECT m.salary
FROM Manager m
WHERE m.department = emp.department)
12年9月24日月曜日
6. 副問い合わせ(EXISTS句)
SELECT DISTINCT emp
FROM Employee emp
WHERE [NOT] EXISTS (
SELECT spouseEmp
FROM Employee spouseEmp
WHERE spouseEmp = emp.spouse)
12年9月24日月曜日
7. 相関副問い合わせ
SELECT c
FROM Customer c
WHERE
(SELECT AVG(o.price) FROM c.orders o) > 100
12年9月24日月曜日
8. 結合
SELECT o
FROM Order AS o
[[LEFT] OUTER,INNER] JOIN o.lineItems l
JOIN l.product p
12年9月24日月曜日
9. FETCH JOIN
SELECT o
FROM Order AS o
JOIN FETCH o.lineItems l
※Lazyフェッチになっている結合を
強制的にEagerフェッチにする
12年9月24日月曜日
10. こんなエラーを見たら使う
• Hibernate
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
• EclipseLink
org.eclipse.persistence.exceptions.ValidationExceptionException Description: An attempt was made
to traverse a relationship using indirection that had a null Session. This often occurs when an entity
with an uninstantiated LAZY relationship is serialized and that lazy relationship is traversed after
serialization. To avoid this issue, instantiate the LAZY relationship prior to serialization.
12年9月24日月曜日
11. コンストラクタ式
SELECT NEW example.CustomerDetails(c.id,
c.status, o.count)
FROM Customer c JOIN c.orders o WHERE
o.count > 100
12年9月24日月曜日