Я использую Grails 2.2.1, и у меня есть пользовательский источник данных, введенный в службу, чтобы я мог выполнять некоторые SQL-запросы.Grails datasource становится нулевым в службе
При первом выполнении имеется источник данных, но при каждом последующем вызове ссылка на источник данных стала нулевой.
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 = "..."
}
}
}
Попробуйте вызвать 'sql.close()' после метода 'sql.eachRow()'. – grantmcconnaughey
ReportService reportService в ReportController должен быть def reportService может не повлиять на ваш прецедент. –
@AnujAneja Я не думаю, что что-то не так с строго типизированными полями. – micha