带有数值的JPQL过滤器字符串在portal-app REST API V1中抛出IllegalArgumentException

时间:2016-11-21 20:27:57

标签: cuba-platform

我希望通过zip(String)使用此正文来获取客户:

{
  "entity": "demo$Customer",
  "query": "select c from demo$Customer c where c.zip = :zip",
  "params": [
        {
          "name": "zip",
          "value": "12345"
        }
    ]
}

我收到此错误:

  

java.lang.IllegalArgumentException:您试图设置一个值   类型为java.math.BigDecimal的类,用于参数zip with expected   查询字符串中的类java.lang.String选择c from   演示$ Customer c其中c.zip =:zip。

如果我将值更改为C12345,我会得到数据。

我的params是错误还是错误,而值是BigDecimal而domain属性是String?如何明确地将该值标记为String?

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您必须明确指定参数类型。您的请求将如下所示:

{
  "entity": "demo$Customer",
  "query": "select c from demo$Customer c where c.zip = :zip",
  "params": [
        {
          "name": "zip",
          "value": "123",
          "type": "string"
        }
    ]
}

如果您具有特定格式的日期或数字参数,则会成功处理具有隐式类型的参数。当您的字符串参数看起来像日期或数字时,则需要显式类型。