2008-11-09 4 views
1

Я довольно новичок в HQL (ну, вообще, в Hibernate), и в настоящее время я создаю простое приложение, чтобы узнать больше об этом.Не удалось преобразовать запрос в HQL

У меня возникли проблемы с попыткой выразить следующий SQL как HQL, и он был бы очень благодарен за любые идеи.

Вот запрос:

select * from parent p 
where p.id in (select p.parentid from child c where c.createdby = 2) 
and 
(select top 1 createdby 
from child where parentid = p.id order by createdon desc) != 2 

ответ

0

Не могу ручаться за вторую часть, но, возможно, это вы можете получить ближе к цели. Я заменил сравнение parentid для ссылки «много-в-один». Любой должен работать в hql.

select p from parent p 
    where p in (select c.ParentReference from child c 
     where c.createdby = :twoparameter) 
    and :twoparameter = (select top 1 c.createdby from child 
     where c.ParentReference = p order by p.createdon desc) 
0

Спасибо, что получил меня на правильном пути. Я не мог использовать «Top», но переписывания запроса, как это, кажется, сделал трюк:

select p from Parent p where p.ID in 
    (select c.parent.Id from Child c where c.CreatedBy = "+user.ID+") 
    and "+ user.ID +" = (select max(c.CreatedBy) 
from Child c 
where child.parent.ID = parent.ID 

извинить противную конкатенацию - следующий шаг должны очистить это с помощью параметризированного HQL!

Смежные вопросы