Я пытаюсь запускать отчеты jasper для действующей базы данных и базы данных отчетов, но любые отчеты, запускаемые для действующей базы данных, выдают исключения о том, что не найдены нужные таблицы (хотя схема PUBLIC по умолчанию найдена).Похоже, что основное соединение DataSource
не соответствует настройкам соединения H2, которые задают IGNORECASE=true
, так как сгенерированные столбцы и таблицы пишутся с большой буквы, по моим запросам нет.
DataSource.groovy dataSource:
dataSource {
hibernate {
cache.use_second_level_cache = false
cache.use_query_cache = false
}
dbCreate = "create-drop" // one of 'create', 'create-drop','update'
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
url = "jdbc:h2:mem:testDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_UPPER=false"
jndiName = null
dialect = null
}
Datasources.groovy dataSource:
datasource(name: 'reporting') {
environments(['development', 'test'])
domainClasses([SomeClass])
readOnly(false)
driverClassName('org.h2.Driver')
url('jdbc:h2:mem:testReportingDb;MODE=PostgreSQL;IGNORECASE=TRUE;DATABASE_TO_UPPER=false')
username('sa')
password('')
dbCreate('create-drop')
logSql(false)
dialect(null)
pooled(true)
hibernate {
cache {
use_second_level_cache(false)
use_query_cache(false)
}
}
}
Что не удалось:
JasperPrint print = JasperFillManager.fillReport(compiledReport, params,dataSource.getConnection())
Во время отладкиЕдинственное различие, которое я обнаружил, состоит в том, что живой источник данных, когда вводится или ищется с DatasourcesUtils.getDataSource(null)
, это TransactionAwareDatasourceProxy
, а DatasourcesUtils.getDataSource('reporting')
это BasicDataSource
Что мне нужно сделать дляJasper для работы с активной базой данных H2 в памяти?
Этот сбой невозможно воспроизвести для реальной базы данных postgres.