为了账号安全,请及时绑定邮箱和手机立即绑定

如何在olingo中读取具有复杂属性的实体集合?

如何在olingo中读取具有复杂属性的实体集合?

米脂 2023-12-13 14:52:30
我大致遵循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处理器方法中抛出了期望。entityCollection我一定错过了一个重要的观点,因为在我看来这My.Namespace.MyComplexType是明确定义的。
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

虽然异常是在处理器中抛出的,但该错误与序列化没有任何关系。

MyComplexType无法找到复杂类型,因为 onlygetEntityType(final FullQualifiedName entityTypeName)在 EdmProvider 中被覆盖,但没有被覆盖getComplexType(final FullQualifiedName complexTypeName)olingo似乎通过调用这些方法来搜索类型。

重写此方法后,所有数据均正确显示。


查看完整回答
反对 回复 2023-12-13
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信