SAP OData(二)Association

Entity之间用Association来表示关联关系,可以同CDS view中的Association一起理解。

我们在上次已经建好实体Item的基础上,再建一个Header,其方法的重写也参考Item即可,然后开始本篇的探索。

一,构建Association
1.1 新建Association

右键Association新建,弹出如下窗口,填入关联名称。

上图红框:左右EntityType填入两个关联的Entity,然后是两个Entity的关联基数。

上图紫框:勾选Create Navigation Property会为EntityType生成一个NavigationProperty(如图3粉框),表示了entity之间的导航路径(详见第二节),如左紫框表示了Header到Item的导航,右紫框表示Item到Header的导航。我们可以只勾选一边,代表只建立单侧的导航。

1.2 指定关联字段

指定两个Entity关联的字段,类似两个表的join字段。注意匹配的字段其数据类型也要一致,且不能使用数量金额作为关联字段。

1.3 Association生成对象

在Association保存之后会生成一些新的对象,如下图内容:

NavigationProperties:这个很重要,表示了entity之间是否能够导航,

Association:展示了关联名,以及关联字段

Association Set:似乎没什么要注意的

二,测试与报文分析
2.1 读取Header实体

使用Postman测试一下获取Header的实体,得到atom格式报文如下,我精简了一些element和attribute。

<?--请求地址 https://{{host}}:{{port}}/sap/opu/odata/sap/Y_TEST_ODATA4_SRV/HeaderSet('4500000001')-->
<?xml version="1.0" encoding="utf-8"?>
<entry xml:base="https://xxxxxx:44301/sap/opu/odata/sap/Y_TEST_ODATA4_SRV/"><category term="Y_TEST_ODATA4_SRV.Header"/><link href="HeaderSet('4500000001')" rel="self" title="Header"/><link href="HeaderSet('4500000001')/Header_To_Item" title="Header_To_Item"/><content type="application/xml"><m:properties><d:DOCNO>4500000001</d:DOCNO><d:VENDOR>XA016</d:VENDOR></m:properties></content>
</entry>

我们在请求地址中指明了entity的key,所以会执行get_entity方法。

从报文可以看到有两个Link: 

HeaderSet('4500000001')" />

这是一个自连接指向Entity自身,每个Entity都会包含自连接,href是相对路径加上服务的前置路径就能得到指向Entity的完整URL

https://xxxxxx:44301/sap/opu/odata/sap/Y_TEST_ODATA4_SRV/HeaderSet('4500000001')

HeaderSet('4500000001')/Header_To_Item" />

由Association生成的连接,导航到相关的EntitySet,那么本例根据Header导航到行项目的URL就是

https://xxxxxx:44301/sap/opu/odata/sap/Y_TEST_ODATA4_SRV/HeaderSet('4500000001')/Header_To_Item

如果Header还有到其他实体的导航,比如到供应商主数据,就会有多个导航Link

2.2 使用Header到Item的导航

在上一步我们知道了Header到Item的导航地址,我们放到postman中测试一下。

在报文中我们看到返回的就是Item内容,而每个Item中又包含一个link可以导航到其Header。注意:如果图1右紫框没有勾选,那么这里就没有导航到Header的link。

由于图1中维护的关联基数是1:N,所以在导航到item时执行的是item的get_entityset方法,如果是1:1则执行的是get_entity方法

2.3 指令$expand

https://{{host}}:{{port}}/sap/opu/odata/sap/Y_TEST_ODATA4_SRV/HeaderSet('4500000001')?$expand=Header_To_Item

如上查询指令:也是利用导航来关联entity的,与2.2小节导航不同的是该指令返回的报文同时包含了Header和Item两个实体,参考下一篇笔记的$expand

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

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

相关文章

脑科学与人工神经网络ANN的发展历程与最新研究

本文深入研究了ANN的基本概念、发展背景、应用场景以及与人脑神经网络的关系。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的…

抽奖机制模型及算法

抽奖机制 连抽保底概率模型不中概率加大模型&#xff08;抽卡保底&#xff09; 抽奖概率为n%&#xff0c;在达到某次次数后&#xff0c;每次概率比上次高m%&#xff0c;直至达到保底次数&#xff08;概率累加和为100%&#xff09;&#xff0c;当抽到极品道具时候&#xff0c;…

网络传输(TCP)

前言 我们tcpdump抓包时会看到除报文数据外&#xff0c;前面还有一段其他的数据&#xff0c;这段数据分为两部分&#xff0c;ip包头&#xff08;一般20字节&#xff09;和tcp包头&#xff08;一般20字节&#xff09;&#xff0c;一般这两个头长度和为40&#xff0c;我们直接跳…

C语言实现单向链表

1.线性表 线性表可以分成两种 一种就是顺序表 也就是我们所熟知的数组 一种是今天的主角–链表 他们两者的区别在于 前者是顺序储存元素的 即数组元素的地址值是连续的 后者则是链式储存的 节点的地址值不一定连续 2.单向链表 链表中的节点是由两部分组成的 一部分是数据域 …

SQL-DQL-基础查询

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

制造业管理者必备技能:掌握6S管理!

当今竞争激烈的制造业领域&#xff0c;为了提高效率、优化流程&#xff0c;并实现持续创新&#xff0c;制造业管理者需要掌握一种全面、系统的管理方法——6S管理。6S管理是源自于日本的精益管理方法&#xff0c;通过整理、整顿、清扫、标准化、维持和安全这六个步骤&#xff0…

监督学习 - 决策树回归(Decision Tree Regression)

什么是机器学习 **决策树回归&#xff08;Decision Tree Regression&#xff09;**是一种机器学习算法&#xff0c;用于解决回归问题。与分类问题不同&#xff0c;回归问题的目标是预测连续型变量的值&#xff0c;而不是离散的类别。决策树回归通过构建一棵决策树来进行预测。…

力扣(leetcode)第599题两个列表的最小索引总和(Python)

599.两个列表的最小索引总和 题目链接&#xff1a;599.两个列表的最小索引总和 假设 Andy 和 Doris 想在晚餐时选择一家餐厅&#xff0c;并且他们都有一个表示最喜爱餐厅的列表&#xff0c;每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅…

基于SkyEye仿真6678处理器:实现国产操作系统ReWorks仿真运行

信号处理的数据量以及实时性的要求随着嵌入式技术的发展不断提高&#xff0c;众多厂商和研究所选择多核DSP处理器芯片去替代原有的单核DSP&#xff0c;并运行嵌入式操作系统来保证信号处理的实时性以及精确性。然而受到硬件资源或者项目实施周期限制&#xff0c;软件工程师调试…

AndroidQ修改永不休眠never

1&#xff1a;修改显示列表&#xff1a; /home/roadwell/Allwinner/SDK/A133/A133_PLUS_AndroidQV1.1NEW/android/packages/apps/Settings/res/values/arrays.xml --- a/res/values/arrays.xml b/res/values/arrays.xml -48,6 48,7 <item>5 minutes</item…

Jmerer之FTP测试

1、文件上传下载测试&#xff0c;可以使用sample:FTP请求&#xff0c;当然也可以使用HTTP Request采样器中的File Upload向服务器上传文件 2、本章重点介绍FTP请求进行文件的上传下载测试&#xff0c;添加 FTP请求&#xff0c;界面主要配置如下&#xff1a; Server Name or I…

Linux 软连接ln -s

什么是文件软链接&#xff1f; Linux 的“软连接”与windos 的"快捷方式"相似。文件软链接&#xff08;Symbolic Link 或 SymLink&#xff09;是一种特殊的文件类型&#xff0c;它实际上是一个指向另一个文件或目录的引用。创建软链接时&#xff0c;系统会建立一个新…

服务器配置 ssh 密钥登录

服务器配置 ssh 密钥登录 配置 服务器安全组策略&#xff0c;开放 ssh 22 端口&#xff0c;以 root 用户登录服务器。 配置 ssh key 登录 ssh-keygen 生成公钥和私钥对 如果不需要其他设置&#xff0c;一直回车 可以在 ~/.ssh 目录下看到两个文件&#xff0c;即刚生成的私钥…

你想要的进程知识——进程替换

进程替换 一、什么是进程替换 创建一个进程后&#xff0c;pid 以及在内核中的信息保持 保持不变,但进程所执行的代码进行替换 作用 : 通过一个进程启动另外一个进程 应用场景&#xff1a; c程序 进程替换启动python.exe 二、exec函数家族 在 Linux 系统中提供了一组用于…

当天,本月,本周,近七天mysql防止全表扫描语句

当天&#xff1a; <![CDATA[ and wi.alarm_time > DATE_FORMAT(NOW(), %Y-%m-%d) and wi.alarm_time < DATE_ADD(DATE_FORMAT(NOW(), %Y-%m-%d), INTERVAL 1 day) ]]> 本月&#xff1a; <![CDATA[ and wi.alarm_time>DATE_ADD(curdate(),interval -day(curd…

访问学者申请需要注意什么?

访问学者申请是一项复杂而重要的过程&#xff0c;需要申请人在准备材料和过程中注意一些关键事项&#xff0c;以确保顺利完成申请并提高成功率。以下是知识人网小编的一些建议&#xff0c;希望对你的访问学者申请有所帮助。 1. 详细了解目标学术机构&#xff1a; 在申请访问学…

数据截取处理、富文本去除所有标签

前提&#xff1a;在做项目中有个需求是填写表单后生成一份文档&#xff0c;文档可以编辑、保存。 这部分用富文本处理了&#xff0c;涉及到的逻辑就是对象-->富文本标签形式 在给后端传的数据格式再把富文本标签形式-->对象形式。 涉及到文字&#xff0c;图片、表格&a…

SQL性能分析-整理

昨日对MySQL的索引整理了一份小文档&#xff0c;对结构/分类/语法等做了一个小总结&#xff0c;具体文章可点击&#xff1a;MySQL-索引回顾&#xff0c;索引知识固然很重要&#xff0c;但引入运用到实际工作中更重要。 参考之前的文章&#xff1a;SQL优化总结以及参考百度/CSDN…

深入探讨:开发连锁餐饮APP的关键技术要点

时下&#xff0c;开发一款功能强大、用户友好的连锁餐饮APP成为许多餐饮企业的当务之急。在本文中&#xff0c;我们将深入探讨开发连锁餐饮APP的关键技术要点&#xff0c;涵盖了前端、后端以及数据库等方面。 一、前端开发 前端是用户与APP交互的入口&#xff0c;因此设计良好…

【QT学习十一】QThread

一、引言 在现代软件开发中&#xff0c;多线程编程变得越来越重要&#xff0c;尤其是对于需要处理并发任务的应用程序。Qt C 框架提供了强大的多线程支持&#xff0c;使得开发者能够轻松地创建和管理多线程应用。 在 Qt 中&#xff0c;多线程的实现主要基于 QThread 类。QThrea…