2010-04-23 2 views
1

Возможно ли получить доступ к таблице отношений при выполнении инструкции HQL?Как получить таблицу отношений при выполнении executeQuery в Grails?

В качестве примера у меня есть 3 таблицы: учетная запись, обязательства, account_commitment. Он был создан с помощью этих доменов:

class Account { 
    static hasMany = [ commits : Commitment ] 

    String name 
} 

class Commitment { 
    static hasMany = [ actors : Account ] 

    String description 
} 

Мой окончательный и фактический SQL запрос что-то вроде этого:

SELECT 
    b.id, 
    account_name, 
    d.nid, 
    d.title 
FROM 
    account_commitment a, // is this available in HQL? 
    account b, 
    commitment c, 
    content_type_act d 
where 
    d.nid = 3332 
    and a.account_id = b.id 
    and a.act_id = c.id 
    and c.act_id = d.nid 

Я считаю, что HQL допускает только действительные домены класса. Поскольку таблица отношений автоматически создается, возможно ли это в HQL?

Спасибо.

ответ

2

Нет, HQL работает только с отображаемыми классами. Если вы хотите запускать SQL-запросы, просто используйте groovy.sql.Sql. Но если вы хотите получить доступ к промежуточной таблице, чтобы присоединиться к двум другим, это не нужно, поскольку HQL уже знает об отношениях между таблицами.

+0

да, похоже. я просто изменил архитектуру и смог получить гораздо лучший запрос. Спасибо за ответ. – firnnauriel

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