Если вы не используете Annotation Processor extension
или JPA Processor extension
, вы бы внедрили / расширили ODataSingleProcessor
. Вы можете извлечь значения $ skip и $ top из URL-адреса из аргумента типа GetEntitySetUriInfo
и использовать их для соответствующего извлечения данных.
Ниже приведен пример кода для этого, вы можете захотеть выполнить нулевые проверки и другие. сенсибилизация.
@Override
public ODataResponse readEntitySet(GetEntitySetUriInfo uriInfo, String contentType) throws ODataException {
int skipValue = uriInfo.getSkip();
int topValue = uriInfo.getTop();
URI serviceRoot = getContext().getPathInfo().getServiceRoot();
ODataEntityProviderPropertiesBuilder propertiesBuilder = EntityProviderWriteProperties
.serviceRoot(serviceRoot);
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
// fetch data from the datasource considering the skip and top values
// one example could be SELECT * FROM table LIMIT topValue OFFSET skipValue
// fill in the data variable
return EntityProvider.writeFeed(contentType, uriInfo.getStartEntitySet(), data, propertiesBuilder.build());
}