java - 这个错误是什么?我该如何防止这个错误?存储桶表达式值不可比较并且未指定比较器

标签 java jasper-reports dynamic-reports

我将 jasperReports 与dynamicReports 一起使用,我想构建一个交叉表报告。到目前为止,我发现当我将数字列添加到 rowGroups 或 columnGroups 时,会发生此错误。这就是我得到的结果,我不知道为什么,也不知道如何解决这个问题。

错误是:

The bucket expression values are not comparable and no comparator specified

我的代码是:

    CrosstabValues crosstabValues = report.getCrosstab().getCrosstabValues();
    Collection<CrosstabRowGroupBuilder> rowGroup = generateRowGroup(crosstabValues);
    Collection<CrosstabColumnGroupBuilder> columnGroup = generateColumnGroup(crosstabValues);
    Collection<CrosstabMeasureBuilder> measures = generateMeasures(crosstabValues);

    CrosstabBuilder crosstab = ctab.crosstab();

    for(CrosstabRowGroupBuilder row : rowGroup)
        crosstab.addRowGroup(row);
    for(CrosstabColumnGroupBuilder columnGroupBuilder : columnGroup)
        crosstab.addColumnGroup(columnGroupBuilder);
    for(CrosstabMeasureBuilder measure : measures)
        crosstab.addMeasure(measure);

    crosstab.headerCell(cmp.text(crosstabValues.getHeader())
    .setStyle(getCrosstabHeaderCellStyle(report.getTemplate().getReportTemplateValues())));

最佳答案

问题是我为这个方法提供的类:

CrosstabRowGroupBuilder cTabRow = ctab.rowGroup(column.getName()
, getColumnTypeClass(column));

我对所有数字数据使用 Number 类。有趣的是,它适用于度量,但不适用于 rowGroup 或 columnGroup。这就是我感到困惑的原因。

现在使用 Integer.Class 或 Long.Class 效果很好。

关于java - 这个错误是什么?我该如何防止这个错误?存储桶表达式值不可比较并且未指定比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22067965/

相关文章:

java - iReport 和外部对象

java - 从 BIRT 中的 POJO 生成动态报告

java - 使用 java - 在 switch 中使用 if else 语句?

java - 以编程方式生成的芯片不响应 ChipGroup 中的单击

java - 如何在 Jasper Reports 中为小数指定 RoundingMode

java - 粗体样式在 pdf 输出中不起作用

java - 安卓通知延迟

java - 无法编译包含非 ASCII 字符的 Java 文件

Python 报告框架

java - 使用 DynamicReports 时出错 : java. lang.NoSuchFieldError:ELEMENT_GROUP_HEIGHT