1

我将 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())));
4

2 回答 2

2

问题是我给这个方法的课程:

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

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

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

于 2014-03-01T12:49:27.933 回答
0

交叉表必须知道以哪个顺序显示 rowHeader 或 columnHeader。并且 crosstab 必须知道 crosstab的哪个单元格放置了 measure。只有当交叉表能够比较rowGroup(和 ColumnGroup)值时才有可能。

rowGroup 和 columnGroup 中使用的类必须implements Comparable接口

于 2014-02-28T07:10:53.110 回答