具有数字值的 JPQL 过滤器字符串在门户应用程序 REST API V1 中抛出 IllegalArgumentException
JPQL filter string with number value throws IllegalArgumentException in portal-app REST API V1
我想通过使用此正文通过 zip(String) 获取客户:
{
"entity": "demo$Customer",
"query": "select c from demo$Customer c where c.zip = :zip",
"params": [
{
"name": "zip",
"value": "12345"
}
]
}
我收到这个错误:
java.lang.IllegalArgumentException: You have attempted to set a value
of type class java.math.BigDecimal for parameter zip with expected
type of class java.lang.String from query string select c from
demo$Customer c where c.zip = :zip.
如果我将值更改为 C12345,我将获得数据。
值是 BigDecimal 且域 属性 是字符串时,我的参数是错误的还是错误?我怎样才能明确地将值标记为字符串?
感谢您的回答。
您必须明确指定参数类型。您的请求将如下所示:
{
"entity": "demo$Customer",
"query": "select c from demo$Customer c where c.zip = :zip",
"params": [
{
"name": "zip",
"value": "123",
"type": "string"
}
]
}
如果您有特定格式的日期或数字参数,则可以成功处理隐式类型的参数。当您有一个看起来像日期或数字的字符串参数时,则需要显式类型。
我想通过使用此正文通过 zip(String) 获取客户:
{
"entity": "demo$Customer",
"query": "select c from demo$Customer c where c.zip = :zip",
"params": [
{
"name": "zip",
"value": "12345"
}
]
}
我收到这个错误:
java.lang.IllegalArgumentException: You have attempted to set a value of type class java.math.BigDecimal for parameter zip with expected type of class java.lang.String from query string select c from demo$Customer c where c.zip = :zip.
如果我将值更改为 C12345,我将获得数据。
值是 BigDecimal 且域 属性 是字符串时,我的参数是错误的还是错误?我怎样才能明确地将值标记为字符串?
感谢您的回答。
您必须明确指定参数类型。您的请求将如下所示:
{
"entity": "demo$Customer",
"query": "select c from demo$Customer c where c.zip = :zip",
"params": [
{
"name": "zip",
"value": "123",
"type": "string"
}
]
}
如果您有特定格式的日期或数字参数,则可以成功处理隐式类型的参数。当您有一个看起来像日期或数字的字符串参数时,则需要显式类型。