2011-11-09 4 views
1

우리의 어플리케이션에는 Datasource.groovy가 정의되어 있습니다. 내가 데이터 소스에서 연결 개체를 얻을 필요가이groovy에서 dataSource로부터 connection 객체를 가져 오는 것

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 문자열을 사용하여 처음부터 연결 개체를 만드는 대신 데이터 원본에 선언 된 개체를 다시 사용하지 않으려합니다.

+0

정확한 오류는 무엇입니까? –

답변

3

대신 종속성 주입 SessionFactory

를 주입 DataSource을, 당신은 종속성 수
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) 
    } 
} 
+0

팁을 보내 주셔서 감사합니다. 이제 configurationholder.config.datasource.url, ... username ..., password 등의 연결에 필요한 invdividual 변수가 생겼습니다. 그런 다음 연결을 생성합니다. 연결 변수에 대한 하드 코딩 –

2

당신은 할 수 있어야한다 :

conn = myappsql.datasource.connection 

을 난 당신이 오류가있어 믿고 같이 construct the Sql object with a datasource

+0

작동하지 않습니다 .. myappsql.dataSource.getconnection()을 실행하면 객체가되지만 java.sql.Connection과 같은 유형이 아닙니다. 나는 conn 객체를 출력했고, "[email protected]와 같은 것이어야 할 DataSource [[email protected]]"에서 대상 연결을위한 트랜잭션 인식 프록시를 말합니다. ". 나는 Jasper Report 호출에서 다른 연결 객체를 사용하려고 시도했지만 작동하지 않습니다. –

+0

@pri_dev 어떤 유형입니까? 다시 추측해야합니까? 'println myappsql.datasource? .connection? .class? .name'이 출력됩니까? –

관련 문제