В представлении передаются системные атрибуты

Добрый день.
В нашем проекте были созданы следующие представления:

> <view entity="dispatching_ContainerArea" name="containerArea-view-for-vehicle-container-area-link">
>         <property name="containers" view="container-view-for-vehicle-container-area-link"/>
>     </view>
>     <view entity="dispatching_Container" name="container-view-for-vehicle-container-area-link">
>         <property name="type" view="containerType-view-for-vehicle-container-area-link"/>
>         <property name="containerSchedule" view="containerSchedule-view-for-vehicle-container-area-link"/>
>     </view>
>     <view entity="dispatching_ContainerType" name="containerType-view-for-vehicle-container-area-link"/>
>     <view entity="dispatching_GarbageRemovalInterval" name="garbageRemovalInterval-view-for-vehicle-container-area-link">
>         <property name="name"/>
>         <property name="orderInMonth"/>
>         <property name="type"/>
>         <property name="value"/>
>     </view>
>     <view entity="dispatching_GarbageRemovalScheduleRecord" name="garbageRemovalScheduleRecord-view-for-vehicle-container-area-link">
>         <property name="interval" view="garbageRemovalInterval-view-for-vehicle-container-area-link"/>
>     </view>
>     <view entity="dispatching_GarbageRemovalSchedule" name="garbageRemovalSchedule-view-for-vehicle-container-area-link">
>         <property name="records" view="garbageRemovalScheduleRecord-view-for-vehicle-container-area-link"/>
>     </view>
>     <view entity="dispatching_ContainerSchedule" name="containerSchedule-view-for-vehicle-container-area-link">
>         <property name="schedule" view="garbageRemovalSchedule-view-for-vehicle-container-area-link"/>
>     </view>

Затем были загружены сущности с представлением “container-view-for-vehicle-container-area-link”. После, сущность была отправлена в ответ на рест-запрос. Формат ответа получился следующий

> "containerAreas": [
> 
>             {
> 
>                 "_entityName": "dispatching_ContainerArea",
> 
>                 "id": "e00bf556-2a8a-0bdb-3fd6-2a922fe24872",
> 
>                 "lkCode": "38100259",
> 
>                 "isVerified": false,
> 
>                 "containersQuantity": 2,
> 
>                 "isLadingArea": false,
> 
>                 "createTs": "2020-07-21 01:31:05.124",
> 
>                 "adoptionDate": "2019-01-01",
> 
>                 "updatedBy": "admin",
> 
>                 "callCenterComment": "",
> 
>                 "containersVolume": 1.5,
> 
>                 "version": 3,
> 
>                 "createdBy": "admin",
> 
>                 "containers": [
> 
>                     {
> 
>                         "_entityName": "dispatching_Container",
> 
>                         "id": "b4179f39-cf32-2f0c-85b6-01cbf9b90460",
> 
>                         "createdBy": "admin",
> 
>                         "createTs": "2020-07-21 01:31:05.158",
> 
>                         "containerArea": {
> 
>                             "_entityName": "dispatching_ContainerArea",
> 
>                             "id": "e00bf556-2a8a-0bdb-3fd6-2a922fe24872"
> 
>                         },
> 
>                         "containerSchedule": {
> 
>                             "_entityName": "dispatching_ContainerSchedule",
> 
>                             "_instanceName": "Вт",
> 
>                             "id": "9a8caccb-4a3a-3aa9-3b84-0f81576d80c0",
> 
>                             "container": {
> 
>                                 "_entityName": "dispatching_Container",
> 
>                                 "id": "b4179f39-cf32-2f0c-85b6-01cbf9b90460"
> 
>                             },

В ответе появились неописаные элементарные поля типа “lkCode” и кроме этого присутствуют системные атрибуты, хотя свойство systemProperties=“true” не описано.
Кроме этого, я прописывал свойство systemProperties=“false”, результат работы представления не изменился.

Подскажите, как все таки убрать системные поля (и непрописанные элементарные атрибуты). С ними рест-запрос отрабатывает очень долго, что неприемлемо для пользователя

Добрый день!
Уточните, пожалуйста:

  1. Какая версия платформы и аддона REST API?
  2. Под сущность была отправлена в ответ на рест-запрос вы какой рест запрос имеете в виду? Вызов middleware сервиса с помощью стандартного REST API? Если да, то метод сервиса что у вас возвращает: сущность, коллекцию сущностей и т.д.?
  3. Как производится загрузка сущностей: dataManager, entityManager, и т.д? Можете код привести?

ext.cubaVersion = ‘7.2.7’
restapi-global:7.2.1

  1. Фронт вызывает самописный REST-метод. Метод выбирает экземпляры сущности ContainerArea по определенному запросу, с вышеуказанным представлением. Затем результат запроса записывается в один из атрибут неперсистентного DTO. Список DTO возвращается ответом

  2. Привел реализацию рест-сервиса и интересующий в нем метод getLinksByRegion

@Service(VehicleContainersLinkRestService.NAME)
class VehicleContainersLinkRestServiceBean(
private val dataManager: DataManager,
private val persistence: Persistence) : VehicleContainersLinkRestService {

override fun getLinksByRegion(regionId: UUID): List<VehicleContainerAreaLinkDTO> {

    val result = LinkedList<VehicleContainerAreaLinkDTO>()
    val vehicles = dataManager.load(Vehicle::class.java)
            .query("select v from dispatching_GarbageRemovalRegion r join r.vehicles v")
            .view {
                it.addAll("number.full")
            }
            .list()

    for (vehicle in vehicles) {
        val link = VehicleContainerAreaLinkDTO()
        link.vehicle = vehicle
        link.containerAreas = dataManager.load(ContainerArea::class.java)
                .query("select l.containerArea from dispatching_VehicleContainerLink l where l.vehicle = :vehicle")
                .parameter("vehicle", vehicle)
                .view("containerArea-view-for-vehicle-container-area-link")
                .list()
        result.add(link)
    }
    return result
}

К сожалению, не получается воспроизвести проблему у себя. Попробуйте, пожалуйста, сделать небольшой демо-проект, на котором проблема воспроизводится, и приложите архив с проектом сюда.

Мне, к сожалению, не удалось воспроизвести данную проблему на демо-проекте.
Но, воспроизвелась обратная проблема: указанные в представлении атрибуты не приходят в ответе.

public List<Company> getCompanies() {
        List<Company> companies = new LinkedList<>();
        companies = dataManager.load(Company.class)
                .query("select c from systemprop_Company c")
                .view(ViewBuilder.of(Company.class).addAll("vehicles.number", "name").build())
//                .view("company-view")
                .list();
        return companies;
    }

Результат в точке останова на строке return companies;
image

Результат ответа от сервера в postman:
image

Нет атрибута name и vehicles, хотя в представлении и в результате запроса они есть

Архив с проектом прилагаю
systemprop.zip (1.4 МБ)

БД
dump.zip (91.1 КБ)

Пользователю, от имени которого вы выполняете REST-запрос, назначена роль в скоупе REST, дающая права на чтение сущностей Company, Vehicle и нужных атрибутов этих сущностей?