我将 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/