我正在使用我的网络应用程序将我的pentaho报告从3.6.1升级到3.8.0。当我更新所有必要的jar文件时,我在我的一个实现ConnectionProvider
的类中遇到了一个编译错误。以下是我的课。
public class DataSourceConnectionProvider implements ConnectionProvider
{
....
}
错误是我的类应该实现getConnectionHash()
接口中定义的ConnectionProvider
方法。但它在3.6.1版本中不存在。所以我有点困惑为什么他们已经添加了它以及如何在我的课堂上实现它。
答案 0 :(得分:0)
此方法返回一个可比较且可清除的对象,并在数据源缓存期间使用。它允许我们构建某种键来检测连接定义中的更改,而许多报表在同一JVM中运行。
缓存实现本身并不知道各种数据源的任何细节,“ConnectionHash”允许我们将结果集分开。
我的基本实现只返回一个添加了所有相关连接属性的ArrayList。
简单示例如何以及在何处需要:
假设您有一个JDBC数据源连接到一个数据库,其中存在多个具有相同表结构的模式,例如在多租户环境中,每个租户都有自己的模式。
使用类似“SELECT * FROM CUSTOMERS WHERE COUNTRY = $ {country-parameter}”的查询,数据源将根据哪个租户执行查询返回不同的数据集。 “connection-hash”,“query-name”和“查询中使用的参数”的总和现在形成一个唯一的标识符,我们可以使用它来存储和稍后从缓存中查找结果集。