Как использовать оператор присваивания MySQL (: =) в собственном запросе гибернации?

Я использую Hibernate. Я написал собственный запрос, потому что мне нужно используйте оператор sub select.

Запрос выглядит следующим образом:

SELECT sub.rownum FROM 
    (SELECT k.`news_master_id` AS id, @row := @row + 1 AS rownum 
        FROM keyword_news_list k 
        JOIN (SELECT @row := 0) r 
        WHERE k.`keyword_news_id` = :kid
    ORDER BY k.`news_master_id` ASC) AS sub 
WHERE sub.id  = :nid

Когда я запускаю этот запрос, он выглядит следующим образом:

sessionFactory.getCurrentSession()
    .createSQLQuery(query)
    .setParameter("kid", kid)
    .setParameter("nid", nid)
    .uniqueResult();

Это исключение возникает:

org.hibernate.QueryException: Space is not allowed after parameter prefix ':' ....

Это может быть из-за оператора : = . I обнаружил проблему гибернации по этому поводу. Эта проблема все еще открыта. Нет ли решения этой проблемы?

18
задан Sanghyun Lee 27 February 2012 в 04:19
поделиться