我正在使用 Grails 2.2.1,并且我有一个自定义数据源注入到服务中,以便我可以执行一些 SQL 查询。
在第一次执行时,有一个 dataSource,但在每次后续调用中,对 dataSource 的引用都变为 null。
class ReportService {
def dataSource_myds
Object[] reportRecords(int a) {
String query = "SELECT ..."
Object[] resultSet;
Sql sql = new Sql(dataSource_myds)
// ^ Here the NullPointerException is thrown
// But it always works at the first execution
sql.eachRow(query, [a]) {
...
resultSet += result
}
return resultSet
}
}
class ReportController {
ReportService reportService
def report = {
...
Object[] resultSet1 = reportService.reportRecords(1)
...
Object[] resultSet2 = reportService.reportRecords(2)
// ^ java.lang.NullPointerException : Must specify a non-null Connection
...
}
}
有没有人以前见过这种情况,如果是这样,我该如何避免这种情况?
这是我的 DataSource.groovy
environments {
development {
dataSource_myds {
url = "jdbc:oracle:thin:@..."
driverClassName = "oracle.jdbc.driver.OracleDriver"
username = "..."
password = "..."
}
}
}