2010-04-23 3 views
1

HQL 문을 수행 할 때 관계 테이블에 액세스 할 수 있습니까?Grails에서 executeQuery를 수행 할 때 관계 테이블에 액세스하는 방법?

예를 들어 계정, 커밋, account_commitment 등 3 개의 테이블이 있습니다. 그것은이 도메인을 사용하여 생성 된 : 나는 HQL에만 유효 수준의 도메인을 허용 생각

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 

:

class Account { 
    static hasMany = [ commits : Commitment ] 

    String name 
} 

class Commitment { 
    static hasMany = [ actors : Account ] 

    String description 
} 

내 최종 실제 SQL 쿼리는이 같은 것입니다. 관계 테이블이 자동 생성되기 때문에 HQL에서 이것이 가능합니까?

감사합니다.

답변

2

아니요, HQL은 매핑 된 클래스에서만 작동합니다. SQL 쿼리를 실행하려면 groovy.sql.Sql 만 사용하면됩니다. 그러나 다른 두 테이블을 결합하기 위해 중간 테이블에만 액세스하려는 경우 HQL은 이미 테이블 간의 관계를 알고 있으므로 불필요합니다.

+0

네, 그렇게 보입니다. 방금 아키텍처를 변경하고 더 나은 쿼리를 수행 할 수있었습니다. 답장을 보내 주셔서 감사합니다. – firnnauriel

관련 문제