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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q

目录 ​​​​​​​ 二叉树的定义&#xff1a; *特殊的二叉树&#xff1a; 二叉树的性质&#xff1a; 二叉树的声明&#xff1a; 二叉树的先序遍历&#xff1a; 二叉树的中序遍历&#xff1a; 二叉树的后序遍历&#xff1a; 二叉树的层序遍历&#xff1a; 二叉树的节…

AVL树(Java)

目录 一、什么是AVL树 二、AVL树的实现 AVL树的节点 AVL树的插入 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 AVL树的验证 三、AVL树的性能分析 一、什么是AVL树 在了解什么是AVL树之前&#xff0c;我们先回顾二叉搜索树的概念 二叉搜索树&#xff08;二叉排序…

pytorch学习笔记(八)

Sequential 看看搭建了这个能不能更容易管理&#xff0c;CIFAR-10数据集进行 看一下网络模型CIFAR-10模型 1 2 3 4 5 6 7 8 9 输入进过一次卷积&#xff0c;然后经过一次最大池化&#…

Stronghold Village

有了近2000个预制件和大量资产,您可以用基本的或先进的模块化预制件建造您的设防城镇或梦幻村庄,其中有许多定制选项和大量道具和物品 通过这个巨大的资源库,你可以创建村庄、城市、要塞、农村建筑、大教堂、城堡等。为你的环境提供高水平的细节,你可以创建外部装饰建筑,也…

Maven的安装和配置

国内Maven仓库之阿里云Aliyun仓库地址及设置 用过Maven的都知道Maven的方便便捷&#xff0c;但由于某些网络原因&#xff0c;访问国外的Maven仓库不便捷&#xff0c;好在阿里云搭建了国内的maven仓库。 需要使用的话&#xff0c;要在maven的settings.xml 文件里配置mirrors的子…

Wpf 使用 Prism 实战开发Day11

仓储&#xff08;Repository&#xff09;/工作单元&#xff08;Unit Of Work&#xff09;模式 仓储&#xff08;rep&#xff09;:仓储接口定义了对实体类访问数据库及操作的方法。它统一管理数据访问的逻辑&#xff0c;并与业务逻辑层进行解耦。 简单的理解就是对访问数据库的一…

Stable Diffusion XL Turbo 文生图和图生图实践

本篇文章聊聊&#xff0c;如何快速上手 Stable Diffusion XL Turbo 模型的文生图和图生图实战。 写在前面 分享一篇去年 11 月测试过模型&#xff0c;为月末分享的文章做一些技术铺垫&#xff0c;以及使用新的环境进行完整复现。 本篇文章相关的代码保存在 soulteary/docker…

c#多线程中使用SemaphoreSlim

SemaphoreSlim是一个用于同步和限制并发访问的类&#xff0c;和它类似的还有Semaphore&#xff0c;只是SemaphoreSlim更加的轻量、高效、好用。今天说说它&#xff0c;以及如何使用&#xff0c;在什么时候去使用&#xff0c;使用它将会带来什么优势。 代码的业务是&#xff1a…

如何使用统计鸟网站统计分析网站流量来源?

统计鸟官网地址&#xff1a;https://www.tongjiniao.com/ 站长必备&#xff01;网站数据统计&#xff0c;流量监测平台 提供网站数据统计分析、搜索关键词、流量访问来源等服务 深入分析用户点击习惯&#xff0c;为智能化运营网站提供更好的用户体验 目录 一、注册账号信息 二…

Ubuntu开机自动挂载硬盘

前言&#xff1a; 因为我的电脑是WIN10 Ubuntu18.04双系统&#xff0c;且两个系统都装在C盘上&#xff0c;而D盘作为数据和代码存储盘&#xff0c;经常会开机就被访问&#xff0c;例如上一次关机前用VS Code访问D盘代码&#xff0c;然后下一次开机的时候打开VSCode发现打不开…

Spark SQL基础

SparkSQL基本介绍 什么是Spark SQL Spark SQL是Spark多种组件中其中一个,主要是用于处理大规模的结构化数据 什么是结构化数据: 一份数据, 每一行都有固定的列, 每一列的类型都是一致的 我们将这样的数据称为结构化的数据 例如: mysql的表数据 1 张三 20 2 李四 15 3 王五 1…

用通俗易懂的方式讲解:一文讲透主流大语言模型的技术原理细节

大家好&#xff0c;今天的文章分享三个方面的内容&#xff1a; 1、比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节&#xff1a;tokenizer、位置编码、Layer Normalization、激活函数等。 2、大语言模型的分布式训练技术&#xff1a;数据并行、张量模型并行、流水线并行、3D …

基于JAVA的数据可视化的智慧河南大屏 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

Mysql如何优化慢查询

如何优化慢查询 慢 SQL 的优化&#xff0c;主要从两个方面考虑&#xff0c;SQL 语句本身的优化&#xff0c;以及数据库设计的优化。 1、避免不必要的列 覆盖索引会导致回表&#xff0c;且增大了IO 2、分页优化 深分页解决方案 使用子查询in 使用连接表 left join 使用游标&a…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子管理实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

131基于matlab的差分进化算法优化K均值聚类问题

基于matlab的差分进化算法优化K均值聚类问题&#xff0c;可调整K参数得到最佳聚类结果。输出聚类可视化图和优化迭代曲线。可替换自己的数据&#xff0c;程序已调通&#xff0c;可直接运行。 131matlab差分进化算法K均值聚类 (xiaohongshu.com)

解决虚拟机的网络图标不见之问题

在WIN11中&#xff0c;启动虚拟机后&#xff0c;发现网络图标不见了&#xff0c;见下图&#xff1a; 1、打开虚拟机终端 输入“sudo server network-manager stop”&#xff0c;停止网络管理器 输入“cd /回车” &#xff0c; 切换到根目录 输入“cd var回车” &#xff0c;…

一款快速稳定的漏洞扫描工具【afrog】零基础入门到精通

工具介绍 afrog 是一款快速、稳定的高性能漏洞扫描器。支持用户自定义PoC&#xff0c;内置CVE、CNVD、默认密码、信息泄露、指纹识别、越权访问、任意文件读取、命令执行等多种类型。通过afrog&#xff0c;网络安全专业人员可以快速验证和修复漏洞&#xff0c;这有助于增强他们…

chromedriver 114以后版本下载地址

谷歌浏览器版本经常会升级&#xff0c;chromedriver 也得下载匹配的版本 chromedriver 114以前版本下载地址https://registry.npmmirror.com/binary.html?pathchromedriver/ 找到匹配浏览器版本 查看自己浏览器版本号v120.0 v120.0版本chromedriver下载地址https://google…

impala元数据自动刷新

一.操作步骤 进入CM界面 > Hive > 配置 > 搜索 启用数据库中的存储通知(英文界面搜索&#xff1a;Enable Stored Notifications in Database)&#xff0c;并且勾选&#xff0c;注意一定要勾选&#xff0c;配置后面的配置不生效。数据库通知的保留时间默认为2天&#…