在SAP HANA中使用OData(二)

news2024/11/19 19:31:56

 通常有两种方式通过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://www.coloradmin.cn/o/1475600.html

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

相关文章

【JavaScript】面试手撕防抖

引入 防抖可是前端面试时最频繁考察的知识点了,首先,我们先了解防抖的概念是什么。咳咳。👀 防抖: 首先它是常见的性能优化技术,主要用于处理频繁触发的浏览器事件,如窗口大小变化、滚动事件、输入框内容…

微服务-微服务Spring Security OAuth 2实战

1. Spring Authorization Server 是什么 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供了一个安全、轻…

【二】【SQL】去重表数据及分组聚合查询

去重表数据 表的准备工作 去除表中重复的数据,重复的数据只留一份。 mysql> create table duplicate_table (-> id int,-> name varchar(20)-> ); Query OK, 0 rows affected (0.03 sec)mysql> insert into duplicate_table values-> (100,aaa)…

用html实现一个简易的百度热榜

用html实现一个简易的百度热榜 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

自主web服务器实现

目录 项目背景网络协议栈协议分层数据封装与分用 HTTP协议介绍HTTP协议简介认识URLURI、URL、URNHTTP的五大特点HTTP协议格式HTTP的请求方法HTTP的状态码HTTP常见的Header CGI机制介绍CGI机制概念CGI模式实现步骤CGI机制的流程 日志文件编写套接字相关代码编写HTTP服务器的主体…

【盲源分离】快速理解FastICA算法(附MATLAB绘图程序)

今天讲一个在信号分析领域较为常用的一个方法&#xff0c;即盲源分离算法中的FastICA。 我们先从一个经典的问题引入。 一、鸡尾酒舞会问题 想象一下&#xff0c;你身处一个熙熙攘攘的鸡尾酒舞会中。四周回荡着各种声音&#xff1a;笑声、交谈声、玻璃碰撞声&#xff0c;甚至…

swagger-ui.html报错404,解决办法

swagger-ui.html报错404,解决办法&#xff01;现在后端开发项目中&#xff0c;为了节省时间&#xff0c;使用swagger插件&#xff0c;可以方便的快捷生成接口文档。但是如果你在请求前端页面路径比如&#xff1a;http://127.0.0.1:7777/swagger-ui.html。找不到。那是因为你的配…

C语言-数据结构-顺序表

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 目录 数据结构相关概念 顺序表 顺序表的概念和结构 线性表 顺序表分类 顺序表和数组的区别 顺序表分类 静态顺序表 动态顺序表 头插和尾插 尾插 数据结构相关概念 数据结构…

统计分析笔记3

文章目录 统计检验选择正确的统计检验统计检验是做什么的&#xff1f;何时进行统计检验选择参数化测试&#xff1a;回归、比较或相关性选择非参数检验 假设检验的假设条件skewness什么是零偏度right skewleft skew计算skewnesswhat to do if your data is skewed kurtosis怎么计…

《大模型时代-ChatGPT开启通用人工智能浪潮》精华摘抄

原书很长&#xff0c;有19.3w字&#xff0c;本文尝试浓缩一下其中的精华。 知识点 GPT相关 谷歌发布LaMDA、BERT和PaLM-E&#xff0c;PaLM 2 Facebook的母公司Meta推出LLaMA&#xff0c;并在博客上免费公开LLM&#xff1a;OPT-175B。 在GPT中&#xff0c;P代表经过预训练(…

C++:类与对象(1)

创作不易&#xff0c;谢谢支持&#xff01; 一、面向过程和面向对象 1、C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 如我们要实现洗衣服&#xff1a; 2、而C是基于面向对象的&#xff0c;关注的是…

跨境电商与支付介绍

1、跨境电商定义和分类&#xff1b; 2、国际贸易清结算&#xff1b; 3、跨境支付&#xff1b; 1、跨境电商定义和分类 跨境电商业务简单说就是指不同国家地域的主体通过电子商务进行交易的一种业务模式。同传统的电商不同&#xff0c;交易双方属于不同的国家。因此&#xff0…

积累:使用QPushButton模拟开关按键

1. 效果图 2. 源码实现 2.1 设置 QPushButton 默认样式 QPushButton{border:none;border-image: url(:/image/close.png); }2.2 主要实现源码 void MainWindow::on_switch_btn_clicked() {if(m_switchisopen){ui->switch_btn->setStyleSheet("QPushButton{\border…

可观测性在威胁检测和取证日志分析中的作用

在网络中&#xff0c;威胁是指可能影响其平稳运行的恶意元素&#xff0c;因此&#xff0c;对于任何希望避免任何财政损失或生产力下降机会的组织来说&#xff0c;威胁检测都是必要的。为了先发制人地抵御来自不同来源的任何此类攻击&#xff0c;需要有效的威胁检测情报。 威胁…

单片机蓝桥杯实训(一)—— 初步了解赛点(省赛)资源包

本篇文章是我在准备单片机蓝桥杯赛事中的第一篇文章&#xff0c;旨在记录初步了解该赛事省赛的赛点资源包&#xff0c;以便更好的提前准备和训练相关的模块代码。文章末尾附有资源包的链接。 一、赛点资源包 赛点资源包所提供的资源如下&#xff1a; 二、赛点资源包解读 这里…

Android+uniapp微信小程序的高校二手商品交易系统卖家vue+springboot/php/nodejs-python

高校的二手商品市场绝对是一个大市场&#xff0c;每年都有毕业生要毕业&#xff0c;每年都有新生来报到&#xff0c;二手商品网站为广大用户提供了一个很好的供需平台&#xff0c;人们可以将自己不用的东西放在网上&#xff0c;也可在网上找到自己需要的东西&#xff0c;物美价…

2024.2.28每日一题

LeetCode 使二叉树所有路径值相等的最小代价 2673. 使二叉树所有路径值相等的最小代价 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编号从 1 到 n 。根节点编号为 1 &#xff0c;树中每个非叶子节点…

RunnerGo UI自动化测试脚本如何配置

RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块&#xff0c;覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建&#xff0c;内嵌高度可复用的测试脚本&#xff0c;测试团队无需复杂的代码编写即可开展低代码的自动化…

智能工业革新,自研工业操作系统携手AI解决行业痛点

一台银色的机械臂流畅地伸展出“手臂”&#xff0c;精准地从料框中抓取目标工件&#xff0c;并将其安装在指定位置进行固定。整个过程中&#xff0c;机械臂的动作顺滑&#xff0c;无一丝卡顿。这可不是什么科幻电影中的场景&#xff0c;而是真实发生在一家电力装备企业智能生产…

二次供水物联网:HiWoo Cloud助力城市水务管理升级

随着城市化的快速推进&#xff0c;二次供水系统作为城市基础设施的重要组成部分&#xff0c;其稳定运行和高效管理显得至关重要。然而&#xff0c;传统的二次供水管理方式在应对复杂多变的城市供水需求时&#xff0c;显得力不从心。为了破解这一难题&#xff0c;HiWoo Cloud平台…