gpt4 book ai didi

java - 如何在 Apache Olingo V2.0 生成的元数据中添加 Annotations 元素?

转载 作者:行者123 更新时间:2023-11-30 03:07:57 24 4
gpt4 key购买 nike

我已经为生成元数据的系统实体开发了 Odata 服务,但我不知道如何向其添加 Annotations 元素。生成的示例元数据如下:-

    <?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:sap="http://www.sap.com/Protocols/SAPData" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
m:DataServiceVersion="1.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="myNamespace" sap:schema-version="1">
<EntityType Name="System">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
<Property Name="name" Type="Edm.String" sap:label="System Name" sap:creatable="false"
sap:updatable="false" sap:sortable="false" sap:required-in-filter="true"/>
<Property Name="description" Type="Edm.String" />
<Property Name="status" Type="Edm.String" />
<Property Name="type" Type="Edm.String" />
</EntityType>
<EntityContainer Name="ODataEntityContainer" m:IsDefaultEntityContainer="true">
<EntitySet Name="Systems" EntityType="myNamespace.System" />
<FunctionImport Name="NumberOfSystems" ReturnType="Collection(myNamespace.System)"
m:HttpMethod="GET" />
</EntityContainer>

</Schema>
</edmx:DataServices>
</edmx:Edmx>

我需要将以下元素添加到上面的元数据

<Annotations Target="myNamespace.System"
xmlns="http://docs.oasis-open.org/odata/ns/edm">
<Annotation Term="com.sap.vocabularies.UI.v1.LineItem">
<Collection>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="name" />
</Record>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="description"/>
</Record>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="status" />
</Record>
</Collection>
</Annotation>
</Annotations>

我遇到了 org.apache.olingo.commons.api.edm.provider.annotation 包,但找不到任何合适的 API。请让我知道我应该如何进行。提前致谢。

最佳答案

您想要使用的注释已在 OData V3 中引入,这就是 Olingo V2 库不直接支持它们的原因。

不过,您可以使用 EdmProvider AnnotationElement 和 AnnotationAttribute 类来模拟此行为。例如,您可以创建一个名为“Annotations”的 AnnotationElement,然后该元素将具有“AnnotationAttribute”Target=SomeString。由于“AnnotationElement”可以有子元素,因此您可以将 Collection 元素放在那里。命名空间也用“AnnotationAttributes”处理。您只能将注释附加到派生自 EdmAnnotatable 接口(interface)的 Edm 元素。所以这是与 V3 的区别。

这是目前使用 Olingo V2 实现此行为的唯一方法。

关于java - 如何在 Apache Olingo V2.0 生成的元数据中添加 Annotations 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34281730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com