Jaspersoft studio报错,Parameter type not supported in query : xxx class java.util.List,关于报表List报表传参问题

  •  我后端springboot里面集成了jasper报表,需要用id进行多条精确查询,那么sql中必须要用查询in关键字,但是经过查询资料发现,jasper报表不支持直接使用IN查询,需要用到以下函数:$X{IN, colName, paramName},如下:
  • 此时id为字段名称,idList是参数名,idList的类型为java.util.List类型
  • 但是预览时候会报错,提示参数类型不支持查询。

  • 这时候非常困惑,查询官方资源表示,$X{IN,colName,paramsName}函数传入的参数类型应该是List类型,但是为什么预览时候却提示此类型不支持查询,网上搜寻答案无解。。。后偶然发现把sql中的${idList} is null 去除后,报错消除。修改如下:

  • 此时可能会有疑问,如果去掉$P{idList} is null 去掉的话,那么不输入此参数,能否查询全部数据,以下是官方文档的回答


    JasperReports 提供了一个特殊的语法,用于与 where 条件一起使用:IN 和 NOTIN 子句。IN 子句检查特定的值是否存在于一组离散的值中。下面是一个示例:

  • ```sql
    SELECT * FROM ORDERS WHERE SHIPCOUNTRY IN ('USA','Italy','Germany')
    ```
    这里的集合由美国、意大利和德国组成。假设我们将国家集合作为列表(最好是 java.util.Collection)或数组传递,为了使之前的查询在国家集合动态地生效,语法应该如下:
    ```sql
    SELECT * FROM ORDERS WHERE $X{IN, SHIPCOUNTRY, myCountries}
    ```
    其中,myCountries 是包含国家名称集合的参数名称。$X{} 子句识别三个参数:
    - 要应用的函数类型(IN 或 NOTIN)
    - 要评估的字段名称(SHIPCOUNTRY)
    - 参数名称(myCountries)

    JasperReports 处理每个值中的特殊字符。如果参数为 null 或包含空列表,表示未为参数设置任何值,则整个 $X{} 子句被评估为始终为真的语句“0 = 0”。


  • 也就是不填入参数时候,$X{}函数会变成“0 = 0”,至此,问题解决!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码精灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值