云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业邮箱_抖音服务器_哪个好

小七 141 0

但如果您确实喜欢阅读,我想请您阅读简介,了解本博客的内容。

本博客是我们针对使用SAP云平台SDK进行服务开发的初学者的系列博客的一部分(请参阅此处了解更多信息)

在本博客中,大数据100,我们将学习如何从一个实体导航到另一个实体。但不要期望这只是学习如何点击超链接…

学习如何描述OData模型中相关实体之间的导航了解如何在OData服务中实现导航(本博客基于ODataV4)

前提:知道如何单击超链接…。另请看这里

如何创建一个项目?请看这里。

是时候在我们的模型中引入第二种实体类型了。这将允许我们在它们之间创建一个关系,这将使我们服务的用户能够从一个实体"导航"到相关实体。

在我们的示例中,我们可以捕获我们的人员拥有的工作。一个人一次只能有一份工作(比如说,这是一份全职工作……),但一份工作当然可以与一个人的多个实例相关。因此,这是一种典型的双向关系:

人->工作:1对1工作->员工:一对多

如前所述,我们希望从一个选定的人员导航到他的工作。我们需要增强模型,我们需要在模型中添加一个实体类型"Job"像往常一样,我想尽量简单,为了只关注我们在这个博客中所学的内容

我们对实体类型"Job"的定义

现在我们想添加一个从Person到Job的导航属性

并且我们还添加了从Job到Person的导航属性

对edmx片段的解释:

Name:

请注意,我们为标记提供的属性名称将在URL中结束。

当最终用户想要从一个人导航到他的工作时,他将使用导航属性的名称

示例:

/odata/v4/DemoService/People(2)/occulation

类型:

导航属性的类型是我们要导航到的实体类型。它必须是限定的,意思是前面有名称空间如果是一对多关系,则类型为集合,例如type="collection(演示人员)

在我们的示例中,我们指定从Person导航到实体类型"Job"的一个实例在另一个方向上,我们从一个作业导航到实体类型"Person"

Partner:

此属性是可选的,我们使用它来表示我们想要双向关系。

我们必须在这里指定什么?它是外部实体类型的导航属性的名称。

注意每个实体类型可以有多个导航属性,所以需要指定哪一个是合作伙伴

可空:

另一个可选属性,返现,可以用来确保导航目标永远不为空。

在我们的示例中,我们假设一个人可能失业,所以导航目标对我们来说可能是空的。因此,我们不指定可为null的属性(默认为true)

需要更多更改才能使导航正常工作:

需要充实实体集。必须添加绑定,以确保在运行时可以解析导航:

说明:

路径:

此路径与实际实体集相关。我的意思是,它不是关于指向任何外来对象的导航路径。的"路径"只是导航属性的名称根据模型的不同,它可能是一条路径。这就是为什么这个属性被称为"路径"。

示例:实体设置为"人",对应的实体类型为"人","人"具有导航属性"职业"。因此,我们给"路径"

目标赋予"占领":这很简单:它是实体集合的名称。我们要导航到的实体集。这和基数无关。我的意思是,即使我们导航到一个实体,我们仍然必须在这里给出实体集的名称。就这样。

我觉得所有这些都是令人困惑的,最好是看一个例子。这个概述是为了最终澄清你所有的困惑:

像往常一样,我们保持一切尽可能简单,所以我们使用一个简单的模型,只实现那些我们需要为这个博客的方法。

为了能够更好地测试服务,我们为两个实体集(人员和工作)的查询和读取添加了简单的代码

但我们关注的是两种导航方法:•人员->工作•作业->人

对应的实现并不复杂,我们只需要看两个方面

1)第一:哪个操作

一个关系可以是一对一,也可以是一对多因此,我们在浏览器中得到的不是一个列表(一对多)就是一个条目(一对一)这意味着,我们要做的不是实现一个查询就是一个读取操作。因此,我们的Java方法不需要新的注解(例如,不需要@Navigation之类的东西)

2)第二:哪个注解属性正如我们刚刚了解到的,我们正在使用一个现有的注释:@Query或@Read那么,大数据与应用,与普通的查询或读取有什么区别呢?还有一个附加属性:"sourceEntity"例:

我们怎么解释这整件事?让我们从左到右看一遍:

1)首先:@读声明它是读取操作。为什么要读书?因为它对应于一个1对1关系的普通导航,大数据运维,这意味着目标是一个单一的条目。示例:一个人只能有一份工作

2)第二个:"服务名"声明调用的服务。在我们的例子中,它被称为"DemoService"