在SAP HANA中使用OData(二)

 通常有两种方式通过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_id=1对应的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]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2812591.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库 Q:顺丰科技2024届校园招聘面向对象是? A:2024届应届毕业生,毕业时间段为2023年10月1日至2024年9月30日(不满足以上毕业时间的同学可以关注顺丰科技社会招聘或…

【深度学习笔记】卷积神经网络——LeNet

卷积神经网络(LeNet) sec_lenet 通过之前几节,我们学习了构建一个完整卷积神经网络的所需组件。 回想一下,之前我们将softmax回归模型( sec_softmax_scratch)和多层感知机模型( :numref:sec_m…

使用mimikata获取域控权限(无免杀)

一、实验环境 windows 7 ip:192.168.1.3 (域内普通用户,有本地管理员权限,但不知明文密码) windows server 2012 ip:192.168.1.1 (DC域控,与server2012管理员密码相同,但不知明文密码)二、准备工作 1、使…

一文读懂 Python 值传递和引用传递

文章目录 版本前言形参和实参值传递和引用传递Python 变量存储值语义和引用语义值语义引用语义 探讨 Python 值传递和引用传递不可变(immutable)类型可变(mutable)类型案例一案例二 拓展:不可变类型真的不可变&#xf…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

大数据可视化的设计规范,全面剖析,很实用。

大数据可视化的设计规范需要考虑到数据量大、复杂度高、数据类型多样等特点。以下是一份常见的大数据可视化设计规范,供您参考: 设计原则 简单易用:保证用户操作简单、直观,降低用户认知负担。数据准确:保证数据准确…

如何保护企业免受人工智能网络钓鱼攻击

文章目录 前言一、生成式人工智能带来了新的网络安全威胁二、人工智能将使网络钓鱼攻击变得更加危险三、企业如何阻止人工智能驱动的网络钓鱼四、网络钓鱼模拟确保责任感和适应性前言 网络钓鱼是网络犯罪分子社会工程武器库中的超级武器。网络钓鱼尤其危险,因为它是网络犯罪分…

力扣经典题目解析--搜索二维矩阵(小米一面)

原题地址: . - 力扣(LeetCode) 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中&#xff0c…

一键生成values-sw<N>dp文件夹插件

插件名&#xff1a;SmallestWidth Dimens&#xff0c;可在AS插件中搜索安装 安装插件后&#xff0c;可使用快捷键ALTP或者在Tools|SmallestWidth 启动插件 插件启动后可自主选择要在那个moudel下生成values-sw<N>dp文件夹&#xff0c;默认有一些文件夹&#xff0c;你也…

Day 2.exec函数族和线程的基本概念、相关函数接口

exec函数族 extern char **environ; int execl(const char *path, const char *arg, ... /* (char *) NULL */); int execlp(const char *file, const char *arg, ... /* (char *) NULL */); int execle(const…

无人艇军事应用展望与思考

源自&#xff1a;《远望要报》 作者&#xff1a;赵国安 “人工智能技术与咨询” 发布 一、无人艇作战使用场景 二、军用无人艇的发展趋势 三、军用无人艇的关键技术 四、世界主要国家无人艇发展动态 结束语 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参…

Vue概念详解【目录】

本专栏简介&#xff1a; 这个专栏是关于 Vue2 和 Vue3 各种概念的大集合&#xff01;它深入挖掘原理&#xff0c;分析各种优势和劣势&#xff0c;适配各种应用场景&#xff0c;部分内容还列出了代码示例&#xff0c;以清晰地讲述原理。在这里&#xff0c;你将全面了解 Vue2 和…

集团机构组网

在数字化转型的浪潮中&#xff0c;企业网络需求日益复杂化&#xff0c;尤其是对于大规模的集团机构来说&#xff0c;高效、安全且可靠的网络连接成为了业务发展的关键。传统网络架构已难以满足这些需求&#xff0c;而SD-WAN&#xff08;软件定义广域网&#xff09;技术的崛起&a…

四川易点慧电子商务有限公司抖音小店:可靠的新零售典范

随着电子商务的迅猛发展和社交媒体的广泛普及&#xff0c;越来越多的消费者选择在网上购物。在这个背景下&#xff0c;四川易点慧电子商务有限公司以其独特的商业模式和强大的供应链整合能力&#xff0c;在抖音小店平台上崭露头角&#xff0c;成为了一个值得信赖的购物新选择。…

提高办公效率:Excel在文秘与行政办公中的应用技巧

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今信息化时代&#xff0c;Excel作为一款常…

Python算法题集_全排列

Python算法题集_全排列 题46&#xff1a;全排列1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【标记数组递归】2) 改进版一【指针递归】3) 改进版二【高效迭代模块】4) 改进版三【高效迭代模块极简代码】 4. 最优算法5. 相关资源 本文为Python…

B树和MySql索引

1.什么是B树 它是一种平衡得多叉树&#xff0c;称为B树&#xff0c;一颗M阶的B树&#xff0c;是一颗平衡的M路的多叉树&#xff0c;可以是空树或者满足一下性质&#xff1a; 根节点至少有两个孩子。每个节点都包含k-1个关键字和K个孩子&#xff0c;其中 ceil(m/2) ≤ k ≤ m …

安泰超声功率放大器技术参数有哪些

超声功率放大器是一种用于放大超声信号的设备&#xff0c;而超声功率放大器的技术参数对于设备的性能和应用场景起着重要作用。在本文中&#xff0c;我们将介绍一些常见的超声功率放大器的技术参数。 功率输出&#xff1a;超声功率放大器的功率输出是指放大器能够输出的最大功率…

【Android移动开发】Windows10平台安装Android Studio与人工智能算法模型部署案例

目录 一、Android Studio下载地址二、开发环境JDK三、开始安装Android Studio四、案例展示与搭建五、人工智能算法模型移动端部署案例参考 一、Android Studio下载地址 https://developer.android.google.cn/studio/install.html 电脑配置要求&#xff1a; 下载保存在指定文…

3.Prometheus数据模型

采样时间戳 指标 指标值平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我。 跟着我从0学习JAVA、spring全家桶和linux运维等知识&#xff0c;带你从懵懂少年走向人生巅峰&#xff0c;迎娶白富美&#xff01; 关注微信公众号【 IT特靠谱 】&#xff0…