2010-03-08 35 views
0

我們如何在2個數據庫上編寫查詢。Grails多個數據庫

我安裝插件的數據源和域類:

class Organization { 
    long id 
    long company_id 
    String name 

    static mapping = { 
     version false 
     table 'organization_' 
     id column : 'organizationId' 
     company_id column : 'companyId' 
     name column : 'name' 
    } 
} 

class Assoc { 
    Integer id 
    Integer association_id 
    Integer organization_id 


    static mapping = { 
     version false 
     table 'assoc' 
     id column : 'ASSOC_ID' 
     association_id column : 'ASSOCIATION_ID' 
     organization_id column : 'ORGANIZATION_ID' 
    } 
} 

這是工作:

def org = Organization.list() 
def assoc = Assoc.list() 

,這是行不通的:

def query = Organization.executeQuery("SELECT o.name as name, o.id FROM Organization o WHERE o.id IN (SELECT a.organization_id FROM Assoc a)") 

錯誤:

org.hibernate.hql.ast.QuerySyntaxException:副教授未映射 [SELECT o.name如姓名,o.id FROM org.com.domain.Organization O,其中 ö .id IN(SELECT a.organization_id FROM AssocOrg a)]

如何使用單個查詢連接2個數據庫?

在此先感謝。

回答

1

您必須將其拆分爲兩個查詢,首先獲取ID並使用主查詢中的ID。該插件將你的領域類分成各自的SessionFactory,所以你不能加入到Hibernate中。

+0

hi burt,我的壞。我不明白「先獲取ID並在主要查詢中使用這些ID」。我們應該在循環中使用嗎?你能用小例子來解釋一下嗎?謝謝 – srinath 2010-03-08 18:50:07

+0

對不起,我的意思是:def organizationIds = Assoc.executeQuery(「SELECT a.organization_id FROM Assoc a」); def query = Organization.executeQuery(「SELECT o.name as name,o.id FROM Organization o WHERE o.id IN(:ids)」,[ids:organizationIds])(致歉的評論格式化) – 2010-03-09 00:14:54

+0

Thanks Burt for giving方案。 – srinath 2010-03-10 06:08:38