получение объекта соединения из dataSource в groovy - PullRequest
1 голос
/ 09 ноября 2011

В нашем приложении определен Datasource.groovy. Я использую его в контроллере, как это

import  javax.sql.DataSource
class xxx {
 javax.sql.DataSource dataSource

 def myappsql = new Sql(dataSource)
 myappsql.row(querystring) .....

}

Мне нужно получить объект подключения из источника данных, возможно ли это прямо так:

 Connection conn = myappsql.getConnection()

Так как это дает мне ошибку, должно ли быть groovy.sql.Sql, чтобы сделать этот вызов?

Я пытаюсь избежать создания объекта подключения с нуля, используя пользователя, пароль и строку URL, и вместо этого повторно использую объект, объявленный в источнике данных.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Вместо внедрения зависимостей DataSource вы можете добавить зависимости SessionFactory

import org.hibernate.SessionFactory
import groovy.sql.Sql

class SomeService {

    static transactional = true
    SessionFactory sessionFactory

    void someMethod() {
        // Get a connection object that participates in the current transaction
        def connection = sessionFactory.currentSession.connection()

       // Use the connection to create a Sql instance
       Sql sql = new Sql(connection)
    }
}
2 голосов
/ 09 ноября 2011

Вы должны быть в состоянии сделать:

conn = myappsql.datasource.connection

Я полагаю, вы получаете ошибку, когда создаете объект Sql с источником данных

...