Ответ 1
Запишите это;
SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc'
Поскольку ваш объект-ученик имеет отношения "Один-многим" с сущностью ClassTbl.
Я начинаю изучать JPA и реализовал пример с запросом JPA на основе следующего собственного SQL-кода, который я тестировал в SQL Server:
SELECT f.StudentID, f.Name, f.Age, f.Class1, f.Class2
FROM Student f
LEFT OUTER JOIN ClassTbl s ON s.ClassID = f.Class1 OR s.ClassID = f.Class2
WHERE s.ClassName = 'abc'
Из приведенного выше SQL я построил следующий запрос JPQL:
SELECT f FROM Student f LEFT JOIN f.Class1 s;
Как вы можете видеть, мне по-прежнему не хватает условия OR s.ClassID = f.Class2
из моего исходного запроса. Мой вопрос: как я могу поместить его в свой JPQL?
Запишите это;
SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc'
Поскольку ваш объект-ученик имеет отношения "Один-многим" с сущностью ClassTbl.
Если у вас есть сущности A и B без какой-либо связи между ними, и для каждого A существует строго 0 или 1 B, вы можете сделать:
select a, (select b from B b where b.joinProperty = a.joinProperty) from A a
Это даст вам объект [] {a, b} для одного результата или List < Object [] {a, b} > для нескольких результатов.
Обычно предложение ON происходит из столбцов сопоставления сопоставления, но черновик JPA 2.1 допускает дополнительные условия в новом предложении ON.
См,
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#ON