2010-03-08 7 views
0

comment pouvons-nous écrire des requêtes sur 2 bases de données.Grails plusieurs bases de données

J'ai installé de plugin sources de données et les classes de domaine sont:

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' 
    } 
} 

que cela fonctionne:

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

et cela ne fonctionne pas:

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)") 

erreur:

org.hibernate.hql.ast.QuerySyntaxException: Assoc n'est pas mis en correspondance [SELECT o.name comme nom, o.id DE org.com.domain.Organization o OÙ o .id IN (SELECT a.organization_id FROM AssocOrg a)]

Comment pouvons-nous nous connecter avec 2 bases de données en utilisant une seule requête?

merci d'avance.

Répondre

1

Vous devrez le scinder en deux requêtes, obtenir les identifiants en premier et les utiliser dans la requête principale. Le plugin partitionne vos classes de domaine dans leur propre SessionFactory, vous ne pouvez donc pas vous joindre à Hibernate.

+0

Salut burt, Mon mauvais.Je ne comprends pas "obtenir les ID d'abord et utiliser ceux dans la requête principale". Est-ce qu'on devrait l'utiliser en boucle? pourriez-vous s'il vous plaît expliquer avec un petit exemple. merci – srinath

+0

Désolé, je voulais dire: def organisationIds = Assoc.executeQuery ("SELECT a.organization_id FROM Assoc a"); def query = Organization.executeQuery ("SELECT o.name comme nom, o.id FROM Organisation o O o o.id IN (: ids)", [ids: organisationIds]) (excuses pour le formatage des commentaires merdiques) –

+0

Merci Burt de donner Solution . – srinath

Questions connexes