如何读取 olingo 中具有复杂属性的实体集合?
How to read a collection of entities with complex properties in olingo?
我大致是从 apache olingo 页面关注这个 Tutorial。我想阅读一组具有复杂属性的实体。
设置提供程序,访问 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
的实体集合时,我收到了 return 消息
Cannot find type with name: My.Namespace.MyComplexType
当在序列化器上调用 entityCollection
时,单步执行代码揭示了处理器的 readEntityCollection
方法中抛出的预期。
我必须忽略一个重点,因为在我看来 My.Namespace.MyComplexType
是明确定义的。
虽然在处理器中抛出异常,但错误与序列化无关。
找不到复杂类型 MyComplexType
,因为在 EdmProvider 中只覆盖了 getEntityType(final FullQualifiedName entityTypeName)
,但没有覆盖 getComplexType(final FullQualifiedName complexTypeName)
。 olingo
似乎通过调用这些方法来搜索类型。
覆盖此方法后,所有数据均已正确显示。
我大致是从 apache olingo 页面关注这个 Tutorial。我想阅读一组具有复杂属性的实体。
设置提供程序,访问 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
的实体集合时,我收到了 return 消息
Cannot find type with name: My.Namespace.MyComplexType
当在序列化器上调用 entityCollection
时,单步执行代码揭示了处理器的 readEntityCollection
方法中抛出的预期。
我必须忽略一个重点,因为在我看来 My.Namespace.MyComplexType
是明确定义的。
虽然在处理器中抛出异常,但错误与序列化无关。
找不到复杂类型 MyComplexType
,因为在 EdmProvider 中只覆盖了 getEntityType(final FullQualifiedName entityTypeName)
,但没有覆盖 getComplexType(final FullQualifiedName complexTypeName)
。 olingo
似乎通过调用这些方法来搜索类型。
覆盖此方法后,所有数据均已正确显示。