网站的收录率,互联网行业前景如何,上海网站建设y021,音乐网站如何做通常有两种方式通过OData来暴露SAP HANA中的数据库对象#xff0c;一是直接使用Database Object#xff0c;比如前一篇和本篇文章介绍的例子#xff0c;这种方式针对于数据已经存在于SAP HANA中#xff0c;在Repository中没有对应的设计时对象(Design-time Object)#xf… 通常有两种方式通过OData来暴露SAP HANA中的数据库对象一是直接使用Database Object比如前一篇和本篇文章介绍的例子这种方式针对于数据已经存在于SAP HANA中在Repository中没有对应的设计时对象(Design-time Object)另一种方式是通过暴露repository中的设计时对象(Design-time Object)这是推荐使用的方式因为这种方式的优点在于如果Design-time Object变化的话OData服务会自动更新如果是直接使用Database Object 如果数据库对象改变OData服务需要人工维护。但为了便于说明在本文使用的例子都是直接暴露Database Object.
1 OData命名空间 (Namespace) 定义 在默认情况之下通过OData服务生成的Schema的命名空间为项目的package的路径与xsodata文件名的拼接例如前一篇文章的默认命名空间为weiyy.testodata.product如图。 我们可以利用namespace关键字来修改命名空间修改原product.xsodata内容如下
service namespace test.namesp{ WEIYY.PRODUCT as product;
}
修改之后提交并激活原来项目 刷新原页面就可以看到修改之后的命名空间为“test.namesp”。
2 OData中的属性投影(Property Projection) 如果数据表中有多列但有时候只需要选择其中的某几列暴露出来一方面可以做一个视图然后暴露这个视图另一方面可以直接使用OData中的属性投影语法with用来选择属性without用来排除属性。 比如对于product这个table我们只暴露其中的id,name这两个列修改product.osodata
service namespace test.namesp{ WEIYY.PRODUCT as product with(id,name);
} 例用without排除属性
service namespace test.namesp{ WEIYY.PRODUCT as product without (price,desc,desc_cn);
} 3 OData中的table关联与属性导航(Navigation Properties) 前面提到过对于多表join的查询可以通过把查询结果做成一个视图来进行暴露笔者也是比较倾向于这种方式但是SAP HANA 中的OData服务同时提供了另外一种查询的方式这里也作一个说明那就是OData中的table关联(Associations)与属性的导航。 我们新建一个assoc.xsodata文件
service { WEIYY.CATEGORY as CATEGORY navigates(Product_Category as products); WEIYY.PRODUCT as PRODUCT ; association Product_Category principal CATEGORY(id) multiplicity 1 dependent PRODUCT(category_id) multiplicity *;
}
说明这里CATEGORY表记录PRODUCT的类别信息 association后面跟关联名称principal一端指明关联的键multiplicity指明关联的维度dependent指关联的另一端。Navigates指明导航的信息。 然后提交激活并访问对应的URI 然后我们访问CATEGORY实体 在products这个属性中列出了相关联的products的URL。 通过这个URL获取到category_id1对应的product。
本篇文章只选择一部分的OData服务定义的语法介绍有关SAP HANA OData中更多的服务定义语法请参考SAP HANA Develop Guide.
参考资料
SAP Help Portal
URI Conventions (OData Version 2.0) · OData - the Best Way to REST
[本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 70.00]