使用 ODataService 公开实体时出错

Error in exposing an Entity with ODataService

当我在 URL 中传递一个实体时,它说 ...
找不到 'Books' 的实体集或函数导入。

我正试图在 Java 中公开 "ODataService" 本书和出版商。代码很长。那么你能告诉我这可能是什么原因吗??

我猜您没有在 EDM 提供程序中为实体类型(例如 Book)定义实体集 (Books)。要检查这一点,您可以查看服务的根 URL(例如 http://services.odata.org/V4/OData/OData.svc/)。我认为,在您的情况下,没有为 Books 定义集合条目:

<service xmlns="http://www.w3.org/2007/app"  
         xmlns:atom="http://www.w3.org/2005/Atom"  
         xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" 
         xml:base="http://services.odata.org/V4/OData/OData.svc/"  
         m:context="http://services.odata.org/V4/OData/OData.svc/$metadata">
    <workspace>
        <atom:title type="text">Default</atom:title>
        <collection href="Books">
            <atom:title type="text">Books</atom:title>
        </collection>
        (...)
    </workspace>
</service>

您还可以检查实体类型是否定义为 Book 类型。看到一个 link 这样的 http://services.odata.org/V4/OData/OData.svc/$metadata.

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" 
           Version="4.0">
    <edmx:DataServices>
        <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" 
                Namespace="ODataDemo">
            <EntityType Name="Book">
            (...)
            </EntityType>
        </Schema>
    </edmx:DataServices>
</edmx:Edmx>

以下link为您全面介绍了如何使用 Olingo v4 实现 OData 服务:

https://templth.wordpress.com/2015/04/27/implementing-an-odata-service-with-olingo/

请参阅第 "Implementing a custom EdmProvider" 部分以了解如何使用 Olingo 实施 EDM 提供程序。

希望对您有所帮助, 蒂埃里