【发布时间】:2017-08-18 07:19:29
【问题描述】:
我有一张人桌,像这样:
ID PersonId SomeAttribute
1 1 yellow
2 1 red
3 2 yellow
4 3 green
5 3 black
6 3 purple
7 4 white
以前我将所有 Persons 作为单独的对象返回给 API。因此,如果用户将限制设置为 3,我只是将休眠中的查询 maxResults 设置为 3 并返回:
{"PersonID": 1, "attr":"yellow"}
{"PersonID": 1, "attr":"red"}
{"PersonID": 2, "attr":"yellow"}
如果有人指定限制为 3 和第 2 页(setMaxResult(3), setFirstResult(6) 它将是:
{"PersonID": 3, "attr":"green"}
{"PersonID": 3, "attr":"black"}
{"PersonID": 3, "attr":"purple"}
但现在我想选择人,然后组合成一个 json 对象,如下所示:
{
"PersonID":3,
"attrs": [
{"attr":"green"},
{"attr":"black"},
{"attr":"purple"}
]
}
这就是问题所在。在 postgresql 或 hibernate 中是否有可能设置限制不是行数而是不同人员 ID 的数量,因为如果用户将限制指定为 4,我应该返回 person1、2、3 和 4,但在我当前的限制机制中,我会返回 person1 有 2 个属性, person2 和 person3 只有一个属性。分页也有同样的问题,现在我可以在一个页面上返回一半的 person3 数组 attrs,在下一页返回另一半。
【问题讨论】:
标签: postgresql hibernate limit