odata在SAP MDK中创建实体操作

2020-08-14 10:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,以下是我的2个实体的元数据:

 
                 <键>
                      
                 
                  
                  
                  
                  
                  
                  
 
 
                 <键>
                      
                 
                  
                  
                  
                  
                  
  

它已从原始版本进行了简化,但问题仍然存在。 如您所见,CompanyProfile实体与Location实体有关系。 实际上,CompanyProfile中的Address属性实际上也是相关的Location实体的ID。 鉴于此,我尝试使用

创建与现有位置相关的新CompanyProfile。
 {
     "版本":" 1",
     " ContactNumber":" 1245",
     "名称":" OIL Tycoon corporation",
     "状态":"确定",
     "地址2"
 } 

但是,这不起作用。 有效的是

 {
     "版本":" 1",
     " ContactNumber":" 1245",
     "名称":" OIL Tycoon corporation",
     "状态":"确定",
     " LocationDetails":{
     " __metadata":{
                 " id":" http://localhost:8080/odata/Locations(2L)",
                 " uri":" http://localhost:8080/odata/Locations(2L)",
                 " type":" default.Location"
             }
   }
 } 

现在我要求这样做的原因是因为由SAP MDK odata操作生成的请求具有第一个的数据结构,所以我得到了一个错误。 第二个结构是我需要的,但是我不知道我的odata api是否错了,而第一个结构仍然正确并且应该被我的api接受(它是使用spring-boot和olingo创建的)。 这是odata操作的代码,以防万一。

" CreateLinks":[
 {
 " Property":" LocationDetails",
 "目标":{
 " EntitySet":"位置",
 " QueryOptions":" $ filter = Id eq 2"
 },
 " _Enabled":是
 }
 ],
 "属性":{
                " ContactNumber":" 1245",
                "名称":" OIL Tycoon corporation",
                "状态":"确定"
        "版本":" 1"
 },
 "目标":{
 " EntitySet":" CompanyProfiles",
 "服务":"/img/DOEDocumentMonitoring/Services/DOEDocumentMonitoring.service"
 },
 " _Type":" Action.Type.ODataService.CreateEntity"
 } 

抱歉,这个问题有点长。 我希望我对这个问题的解释很清楚。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,以下是我的2个实体的元数据:

 
                 <键>
                      
                 
                  
                  
                  
                  
                  
                  
 
 
                 <键>
                      
                 
                  
                  
                  
                  
                  
  

它已从原始版本进行了简化,但问题仍然存在。 如您所见,CompanyProfile实体与Location实体有关系。 实际上,CompanyProfile中的Address属性实际上也是相关的Location实体的ID。 鉴于此,我尝试使用

创建与现有位置相关的新CompanyProfile。
 {
     "版本":" 1",
     " ContactNumber":" 1245",
     "名称":" OIL Tycoon corporation",
     "状态":"确定",
     "地址2"
 } 

但是,这不起作用。 有效的是

 {
     "版本":" 1",
     " ContactNumber":" 1245",
     "名称":" OIL Tycoon corporation",
     "状态":"确定",
     " LocationDetails":{
     " __metadata":{
                 " id":" http://localhost:8080/odata/Locations(2L)",
                 " uri":" http://localhost:8080/odata/Locations(2L)",
                 " type":" default.Location"
             }
   }
 } 

现在我要求这样做的原因是因为由SAP MDK odata操作生成的请求具有第一个的数据结构,所以我得到了一个错误。 第二个结构是我需要的,但是我不知道我的odata api是否错了,而第一个结构仍然正确并且应该被我的api接受(它是使用spring-boot和olingo创建的)。 这是odata操作的代码,以防万一。

" CreateLinks":[
 {
 " Property":" LocationDetails",
 "目标":{
 " EntitySet":"位置",
 " QueryOptions":" $ filter = Id eq 2"
 },
 " _Enabled":是
 }
 ],
 "属性":{
                " ContactNumber":" 1245",
                "名称":" OIL Tycoon corporation",
                "状态":"确定"
        "版本":" 1"
 },
 "目标":{
 " EntitySet":" CompanyProfiles",
 "服务":"/img/DOEDocumentMonitoring/Services/DOEDocumentMonitoring.service"
 },
 " _Type":" Action.Type.ODataService.CreateEntity"
 } 

抱歉,这个问题有点长。 我希望我对这个问题的解释很清楚。

付费偷看设置
发送
3条回答
CPLASF-自律
1楼-- · 2020-08-14 11:17

请在创建有效内容中同时指定ID,因为它是必填字段(nullable = false):

 {"版本":" 1","联系电话":" 1245","编号":" 2","名称":" OIL Tycoon公司","状态":"确定","地址":  " 2"} 
jovirus
2楼-- · 2020-08-14 11:08

因此,这似乎是服务器的一个怪癖。 同样有效的是

 {
     "版本":" 1",
     " ContactNumber":" 1245",
     "名称":" OIL Tycoon corporation",
     "状态":"确定",
     " LocationDetails":{
        " Id":" 2"

     }
 } 

我认为这被称为深层实体吗? 反正在SAP MDK中执行这种类型的创建吗?

落灬小鱼
3楼-- · 2020-08-14 11:08

嗨Rishabh,

在这种情况下,将自动创建ID。 我想澄清一下,这基本上是该api的最低要求,只是在我给出的第一个示例中未识别出Address。 api可以识别第二个示例(地址也是LocationDetails,仅以链接形式或其他形式。对不起,我真的不知道其具体名称)

一周热门 更多>