2012-01-27 20 views
5

Quindi, se voglio fare una domanda diretta SQL utilizzando la sessione che Grails sta usando prima di supportare più origini dati che potrei fare:Ottenere il SessionFactory per una particolare origine dati in Grails

def conn = new Sql (sessionFactory. currentSession.connection())

Ora la domanda è che ho più origini dati e voglio prendere una connessione ad una specifica.

Come faccio?

TIA

risposta

13

Dato un DataSource definito DataSource.groovy come "dataSource_foo", avrete un SessionFactory chiamato sessionFactory_foo. Così si può dipendenza a iniettare come qualsiasi altro Primavera di fagioli:

def sessionFactory_foo 

e usarlo in questo modo:

def conn = new Sql(sessionFactory_foo.currentSession.connection()) 
+1

Questo è davvero semplice che avrei dovuto provare it ... Grazie Burt ... Impressionante ... – user1085751

+0

@Bert Sei un membro così prezioso per la community di Grails, grazie! –

+0

@ burt-beckwith Puoi dirci come possiamo ottenere questo in Grails 3? Sto usando la versione 3.2.2 ma non riesco a connettermi con più origini dati e lavoro con loro –

0

È possibile associare alla sessione utilizzando un riferimento di classe di dominio come segue:

Questo metodo non richiede un riferimento hardcoded al suffisso dell'origine dati.

0

meglio dichiarare la fonte dei dati nel vostro fagioli (Service, controller ...) da iniettare (non c'è bisogno di dipendere da Hibernate qui)

def dataSource 

e usarlo direttamente:

Sql sql = new Sql(dataSource) 

Se si dispone di più origini dati, basta seguire la convenzione di denominazione

def dataSource_foo 
+1

questo divora connessioni eccessive meglio usare sessionFactory.currentSession.connection() – davydotcom

Problemi correlati