SQL в HQL с подзапросами - PullRequest
       4

SQL в HQL с подзапросами

0 голосов
/ 23 ноября 2010

Я читал об отсутствии поддержки подзапросов с HQL, но в любом случае, кто-нибудь может сказать мне, может ли этот SQL-запрос быть реализован с помощью HQL?

Я уже провел некоторое тестирование, но безуспех ... не знаю, нахожусь ли я на правильном пути ...

SQL (работает)


    SELECT
    foo.id as fooId,
    foo.name AS fooName,
    chan.name AS chanName,
    (SELECT DISTINCT
        foo_lang.VALUE
     FROM
        foo_lang
     WHERE
        foo_lang.foo_id = fooId AND
        foo_lang.lang_id = 1) as EN
    FROM
        foo
    INNER JOIN chan ON foo.chan_id = chan.id

HQL (не работает)


select new
    Map(o.id as id,
        o.name as fooName,
        c.name as chanName,
        (select fl.value from foo_lang fl where fl.id.fId = id and fl.id.lId = 1) as EN)
from
    foo o
    left join o.chan c

Это дает:

org.hibernate.TypeMismatchException: левая и правая части двоичного логического оператора были несовместимы [big_decimal: component [lId, rId]]

О подзапросах иличто-то еще?

Заранее спасибо.

1 Ответ

0 голосов
/ 24 ноября 2010

Я пытался воспроизвести ваш случай с немного разными объектами, и я не понимаю, зачем вам этот подзапрос. AFAIK, логически это будет то же самое, если вы присоединитесь foo_lang к foo , например:

SELECT
 o.id,
 o.name as fooName,
 c.name as chanName,
 fl.value as EN
FROM foo AS o
LEFT JOIN o.chan AS c
LEFT JOIN o.foo_lang AS fl WITH fl.lang_id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...