Как прочитать коллекцию объектов со сложными свойствами в olingo? - PullRequest
0 голосов
/ 23 октября 2019

Я примерно слежу за этим Учебником со страницы apache olingo. Я хочу прочитать коллекцию сущностей со сложными свойствами.

При настройке провайдера я получаю следующий вывод при доступе к http://localhost:8080/api/odata/$metadata:

<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
    <edmx:DataServices>
        <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="My.Namespace">
            <EntityType Name="MyEntity">
                <Key>
                    <PropertyRef Name="id"/>
                </Key>
                <Property Name="id" Type="Edm.String"></Property>
                <Property Name="name" Type="Edm.String"></Property>
                <Property Name="description" Type="Edm.String"></Property>
                <Property Name="complexProp" Type="My.Namespace.MyComplexType"></Property>
            </EntityType>
            <ComplexType Name="MyComplexType">
                <Property Name="id" Type="Edm.String"></Property>
                <Property Name="name" Type="Edm.String"></Property>
            </ComplexType>
            <EntityContainer Name="Container">
                <EntitySet Name="MyEntities" EntityType="My.Namespace.MyEntity"></EntitySet>
            </EntityContainer>
        </Schema>
    </edmx:DataServices>
</edmx:Edmx>

Что, кажется, подходит дляя (это?). Но когда я пытаюсь прочитать коллекцию моих сущностей, получающих доступ к http://localhost:8080/api/odata/MyEntities, я получаю ответное сообщение

Cannot find type with name: My.Namespace.MyComplexType

И вход в код обнаруживает выброшенное ожидание в методе readEntityCollection процессора, когда *На сериализаторе вызывается 1014 *.

Я должен пропустить важный момент, потому что мне кажется, что My.Namespace.MyComplexType четко определен.

1 Ответ

0 голосов
/ 24 октября 2019

Хотя в процессоре было сгенерировано исключение, ошибка не имела ничего общего с сериализацией.

Не удалось найти сложный тип MyComplexType, поскольку в EdmProvider был переопределен только getEntityType(final FullQualifiedName entityTypeName). , но не getComplexType(final FullQualifiedName complexTypeName). olingo, кажется, ищет типы, вызывая эти методы.

После переопределения этого метода все данные были правильно отображены.

...