5.8. 执行 JPQL 查询(POST)

也可以使用 POST HTTP 请求执行查询。特别是需要将集合作为查询参数值传递时,可以使用 POST 请求。此时,REST 查询配置文件中查询参数的类型必须以方括号结尾:java.lang.String[]java.util.UUID[] 等。

<?xml version="1.0"?>
<queries xmlns="http://schemas.haulmont.com/cuba/rest-queries.xsd">
    <query name="ordersByIds" entity="sales$Order" view="order-edit-view">
        <jpql><![CDATA[select o from sales$Order o where o.id in :ids and o.status = :status]]></jpql>
        <params>
            <param name="ids" type="java.util.UUID[]"/>
            <param name="status" type="java.lang.String"/>
        </params>
    </query>
</queries>

查询参数值必须作为 JSON map 在请求体中传递:

{
  "ids": ["c273fca1-33c2-0229-2a0c-78bc6d09110a", "e6c04c18-c8a1-b741-7363-a2d58589d800", "d268a4e1-f316-a7c8-7a96-87ba06afbbbd"],
  "status": "ready"
}

POST 请求 URL:

http://localhost:8080/app/rest/v2/queries/sales$Order/ordersByIds?returnCount=true