ライブとレポーティングデータベースに対してジャスパーレポートを実行しようとしていますが、ライブデータベースに対して実行されるレポートでは、(デフォルトのPUBLICスキーマが見つかりましたが)正しいテーブルを見つけられないという例外がスローされます。メインのDataSource
接続が、IGNORECASE=true
を指定するH2接続設定を尊重していないように見えます。生成された列とテーブルが大文字になっているため、クエリでは表示されません。メモリ内のh2データソースに対してJasperレポートを実行していますか?
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(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')
私はジャスパーは、アクティブメモリ内のH2データベースを操作するために行うには何が必要ですBasicDataSource
であるということですか?
このエラーは、実際のpostgresデータベースに対しては再現できません。
'autoServer = TRUE'はまだ失敗し、手動でdatabsasesを開始することはオプションではありません。 'jdbc:h2:〜/ testDb'は、明示的にファイル参照を使用するのと同じように、ロックモードとクローズ遅延のすべての組み合わせで失敗します。 2番目のインメモリ・データベース*は動作し、接続はgrailsアプリケーション*と*ジャスパー・レポートの両方で実行できます。 –
どのバージョンのH2をお使いですか? 「失敗する」とは、テーブルが利用できないことを意味します。例外が発生した場合は投稿できますか? –
私の質問が更新されました。この問題は、テーブルとカラムがH2内で大文字になり、 'IGNORECASE = true'を指定するとうまくいくはずですが、接続をパスすると、小文字のテーブル/カラム名のクエリは失敗します。 私はH2 1.3.159を使用しています。 –