powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В EJB QL LEFT JOIN можно делать только со связанными табличками?
3 сообщений из 3, страница 1 из 1
В EJB QL LEFT JOIN можно делать только со связанными табличками?
    #37895624
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочется написать такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT [всякие поля],
sd.d
FROM MEDFIN.SCHET t0 LEFT OUTER JOIN MEDFIN.ERROR t1 ON (t1.ID_PAK = t0.ID_PAK)
LEFT OUTER JOIN MEDFIN.SLUCH t2 ON (t2.ID_PAK = t0.ID_PAK)
LEFT OUTER JOIN MEDFIN.ERROR t3 ON ((t3.ID_PAK = t2.ID_PAK) AND (t3.ID_SLUCH = t2.ID_SLUCH))
LEFT OUTER JOIN MEDFIN.USL t4 ON ((t4.ID_PAK = t2.ID_PAK) AND (t4.ID_SLUCH = t2.ID_SLUCH))
LEFT OUTER JOIN MEDFIN.ERROR t5 ON ((t5.ID_PAK = t4.ID_PAK) AND ((t5.ID_USL = t4.ID_USL) AND (t5.ID_SLUCH = t4.ID_SLUCH)))
LEFT OUTER JOIN MEDFIN.INTOX t6 ON ((t6.ID_PAK = t4.ID_PAK) AND ((t6.ID_USL = t4.ID_USL) AND (t6.ID_SLUCH = t4.ID_SLUCH)))
LEFT OUTER JOIN MEDFIN.EXPERT t7 ON ((t7.ID_PAK = t4.ID_PAK) AND ((t7.ID_USL = t4.ID_USL) AND (t7.ID_SLUCH = t4.ID_SLUCH)))
left outer join 
(select name as d, lpucode as l from SYSDBF.LPU) sd
on t2.lpucode=sd.l
WHERE (t0.VERSION = '1.2')
ORDER BY t0.ID_PAK ASC, t2.ID_PAK ASC, t2.ID_SLUCH ASC, t4.ID_PAK ASC, t4.ID_SLUCH ASC, t4.ID_USL ASC



left outer join
(select name as d, lpucode as l from SYSDBF.LPU) sd
on t2.lpucode=sd.l


В чистом SQL я могу взять, и любую табличку по любому полу сделать join к любому полю любой другой таблички, даже если они не связаны никакими foreign key'ями, а можно ли это сделать в EJB QL?

Следующие 2 запроса не работают:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            String query_string = "SELECT ...........,"
                    + "lpu"
                    + " FROM Schet schet"
                    + " LEFT OUTER JOIN schet.errorList scheterror"
                    + " LEFT OUTER JOIN schet.sluchList sluch"
                    + " LEFT OUTER JOIN sluch.errorList slucherror"
                    + " LEFT OUTER JOIN sluch.uslList usl"
                    + " LEFT OUTER JOIN usl.errorList uslerror"
                    + " LEFT OUTER JOIN usl.intoxList intox"
                    + " LEFT OUTER JOIN usl.expertList expert"
                    + " LEFT OUTER JOIN Lpu lpu ON sluch.lpucode=lpu.lpucode"
                    + " ORDER BY schet.idPak,sluch.sluchPK.idPak,sluch.sluchPK.idSluch,usl.uslPK.idPak,usl.uslPK.idSluch,usl.uslPK.idUsl";



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            String query_string = "SELECT ...........,"
                    + "lpu"
                    + " FROM Schet schet"
                    + " LEFT OUTER JOIN schet.errorList scheterror"
                    + " LEFT OUTER JOIN schet.sluchList sluch"
                    + " LEFT OUTER JOIN sluch.errorList slucherror"
                    + " LEFT OUTER JOIN sluch.uslList usl"
                    + " LEFT OUTER JOIN usl.errorList uslerror"
                    + " LEFT OUTER JOIN usl.intoxList intox"
                    + " LEFT OUTER JOIN usl.expertList expert"
                    + " LEFT OUTER JOIN (SELECT lpu FROM Lpu lpu) sublpu ON sluch.lpucode=sublpu.lpucode"
                    + " ORDER BY schet.idPak,sluch.sluchPK.idPak,sluch.sluchPK.idSluch,usl.uslPK.idPak,usl.uslPK.idSluch,usl.uslPK.idUsl";



Вариант с FROM [что-то], [что-то ещё] WHERE [условие связи]
Мне не нравится, так как если что-то в FROM пустое, то весь результат автоматически пустой.
...
Рейтинг: 0 / 0
В EJB QL LEFT JOIN можно делать только со связанными табличками?
    #37895793
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил я эту проблему.
Я просто в сущности ввёл псевдополе:
Код: sql
1.
2.
    @JoinColumn(name = "LPUCODE", referencedColumnName = "LPUCODE", nullable = false, insertable = false, updatable = false)
    @OneToOne(optional = true, fetch = FetchType.LAZY)


И написал нормальный запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            String query_string = "SELECT .......,"
                    + "lpu.name"
                    + " FROM Schet schet"
                    + " LEFT OUTER JOIN schet.errorList scheterror"
                    + " LEFT OUTER JOIN schet.sluchList sluch"
                    + " LEFT OUTER JOIN sluch.errorList slucherror"
                    + " LEFT OUTER JOIN sluch.uslList usl"
                    + " LEFT OUTER JOIN usl.errorList uslerror"
                    + " LEFT OUTER JOIN usl.intoxList intox"
                    + " LEFT OUTER JOIN usl.expertList expert"
                    + " LEFT OUTER JOIN sluch.lpuname lpu"
                    + " ORDER BY schet.idPak,sluch.sluchPK.idPak,sluch.sluchPK.idSluch,usl.uslPK.idPak,usl.uslPK.idSluch,usl.uslPK.idUsl";


LEFT OUTER JOIN sluch.lpuname lpu
...
Рейтинг: 0 / 0
В EJB QL LEFT JOIN можно делать только со связанными табличками?
    #37895795
Niky4000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
    @JoinColumn(name = "LPUCODE", referencedColumnName = "LPUCODE", nullable = false, insertable = false, updatable = false)
    @OneToOne(optional = true, fetch = FetchType.LAZY)
    private Lpu lpuname;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / В EJB QL LEFT JOIN можно делать только со связанными табличками?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]