在Jasper Reports中使用带有$ X {}的WHERE IN子句中的自定义属性

时间:2013-07-03 12:19:00

标签: jasper-reports

我目前有一个名为countries的{​​{1}}类型的参数,我在java.util.List子句中使用它,如下所示:

WHERE IN

在我的应用中,我必须将AND $X{IN, rd.country_id, countries} 转换为List<Country>,以便我可以使用它来制作IN子句,否则Jasper会创建类似List<Integer>的内容,而不是使用ID。

我想知道是否可以使用country_id IN ("Argentina", "Brazil")作为我的参数并告诉List<Country>使用字段 id 来创建IN子句,以便我可以使用{ {1}}方法显示用户选择的国家/地区,任何想法?感谢

2 个答案:

答案 0 :(得分:1)

我现在能想到的一种方法是创建一个java类,它将获取类型countryname的List并返回countryId类型的List。 你必须创建另一个List类型的参数。这个参数将调用java方法。然后你可以在查询中使用这个参数

我认为@Lisa提供的答案在这种情况下不起作用。

编辑: 将java类放在项目类路径中 “&lt;&gt;”标签不可见

答案 1 :(得分:0)

我不确定您是如何部署此报告的,但是您是否可以将输入控件的可见列设置为国家/地区名称,但是将值列设置为国家/地区ID?

如果您无法编辑输入控件,那么如何修改查询以处理国家/地区名称到ID转换呢?

SELECT *
FROM myTable
WHERE countryID IN (SELECT countryID
                    FROM countryTable
                    WHERE $X{IN, countryName, countries}
                    )