@ sap/cds-odata-v2-adapter-proxy-外键问题

2020-08-19 00:42发布

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

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


错误:CDS编译失败

 srv/csn.json:861:错误:为关联\" MYAPP_SRV.RecipientSet.parent \"生成的外键元素\" parent_ID \"与现有元素冲突

 srv/csn.json:1063:错误:为关联\" Recipient.parent \"生成的外键元素\" parent_ID \"与现有元素冲突

 srv/csn.json:1264:信息:输入CSN包含重新计算的本地化视图定义

  在transform4odata(/home/vcap/deps/0/node_modules/@sap/cds-compiler/lib/transform/forOdata.js:401:11)
 在Object.toOdata(/home/vcap/deps/0/node_modules/@sap/cds-compiler/lib/backends.js:246:27)
 在Object.emitter。 [作为toOdata](/home/vcap/deps/0/node_modules/@sap/cds/lib/models/cdsv.js:152:27)
 在Object.forOData(/home/vcap/deps/0/node_modules/@sap/cds/lib/models/cdsv.js:30:37)
 在Object.odata(/home/vcap/deps/0/node_modules/@sap/cds/lib/models/compile.js:42:23)
 在compDefaultService(/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:326:46)在getDefaultMetadata(/home/vcap/deps/0/node_modules /@sap/cds-odata-v2-adapter-proxy/lib/index.js:305:18)
 在getMetadata(/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:255:24)
 在/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:123:33
 在/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:130:11 

我的带有V2适配器的CAP CDS服务运行良好,直到今天早上,当我进行新的部署时,执行v2服务时开始出现上述错误。
@ sap/cds的版本 -odata-v2-adapter-proxy是1.4.19

该服务的v4版本运行正常,并生成以下元数据:

 <?xml版本=" 1.0"编码=" utf-8"?>
 
     
         
     
     
         
     
     
         
     
     
         
     
     
         
             
                 
                     
                 
                 
                     
                 
             
             
                 <键>
                     
                 
                 
                 
                 
                 <属性名称=" createdBy"类型=" Edm.String" MaxLength =" 255"/>
                 <属性名称=" modifiedBy"类型=" Edm.String" MaxLength =" 255"/>
                 <属性名称=" DocumentNo"类型=" Edm.String" MaxLength =" 10"/>
                 <属性名称=" DocumentType"类型=" Edm.String" MaxLength =" 25"/>
                 
                 
                     
                 
             
             
                 <键>
                     
                 
                 
                 
                     
                 
                 <属性名称=" RecipientType"类型=" Edm.String" MaxLength =" 3"/>
                 <属性名称=" RecipientNo"类型=" Edm.String" MaxLength =" 10"/>
                 <属性名称="收件人"类型=" Edm.String"/>
                 <属性名称=" parent_ID"类型=" Edm.Guid"/>
             
         
     
  

我的数据模型:

实体收件人:cuid {
   parent:与DocumentRecipient的关联;
   RecipientType:字符串(3);
   RecipientNo:String(10);
   收件人:字符串;
 }

 实体DocumentRecipient:cuid,托管{
   DocumentNo:字符串(10);
   DocumentType:字符串(25);
   事件:字符串(6);
   收件人:收件人上许多收件人的组成。parent= $ self;
 }
 

预先感谢

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

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


错误:CDS编译失败

 srv/csn.json:861:错误:为关联\" MYAPP_SRV.RecipientSet.parent \"生成的外键元素\" parent_ID \"与现有元素冲突

 srv/csn.json:1063:错误:为关联\" Recipient.parent \"生成的外键元素\" parent_ID \"与现有元素冲突

 srv/csn.json:1264:信息:输入CSN包含重新计算的本地化视图定义

  在transform4odata(/home/vcap/deps/0/node_modules/@sap/cds-compiler/lib/transform/forOdata.js:401:11)
 在Object.toOdata(/home/vcap/deps/0/node_modules/@sap/cds-compiler/lib/backends.js:246:27)
 在Object.emitter。 [作为toOdata](/home/vcap/deps/0/node_modules/@sap/cds/lib/models/cdsv.js:152:27)
 在Object.forOData(/home/vcap/deps/0/node_modules/@sap/cds/lib/models/cdsv.js:30:37)
 在Object.odata(/home/vcap/deps/0/node_modules/@sap/cds/lib/models/compile.js:42:23)
 在compDefaultService(/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:326:46)在getDefaultMetadata(/home/vcap/deps/0/node_modules /@sap/cds-odata-v2-adapter-proxy/lib/index.js:305:18)
 在getMetadata(/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:255:24)
 在/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:123:33
 在/home/vcap/deps/0/node_modules/@sap/cds-odata-v2-adapter-proxy/lib/index.js:130:11 

我的带有V2适配器的CAP CDS服务运行良好,直到今天早上,当我进行新的部署时,执行v2服务时开始出现上述错误。
@ sap/cds的版本 -odata-v2-adapter-proxy是1.4.19

该服务的v4版本运行正常,并生成以下元数据:

 <?xml版本=" 1.0"编码=" utf-8"?>
 
     
         
     
     
         
     
     
         
     
     
         
     
     
         
             
                 
                     
                 
                 
                     
                 
             
             
                 <键>
                     
                 
                 
                 
                 
                 <属性名称=" createdBy"类型=" Edm.String" MaxLength =" 255"/>
                 <属性名称=" modifiedBy"类型=" Edm.String" MaxLength =" 255"/>
                 <属性名称=" DocumentNo"类型=" Edm.String" MaxLength =" 10"/>
                 <属性名称=" DocumentType"类型=" Edm.String" MaxLength =" 25"/>
                 
                 
                     
                 
             
             
                 <键>
                     
                 
                 
                 
                     
                 
                 <属性名称=" RecipientType"类型=" Edm.String" MaxLength =" 3"/>
                 <属性名称=" RecipientNo"类型=" Edm.String" MaxLength =" 10"/>
                 <属性名称="收件人"类型=" Edm.String"/>
                 <属性名称=" parent_ID"类型=" Edm.Guid"/>
             
         
     
  

我的数据模型:

实体收件人:cuid {
   parent:与DocumentRecipient的关联;
   RecipientType:字符串(3);
   RecipientNo:String(10);
   收件人:字符串;
 }

 实体DocumentRecipient:cuid,托管{
   DocumentNo:字符串(10);
   DocumentType:字符串(25);
   事件:字符串(6);
   收件人:收件人上许多收件人的组成。parent= $ self;
 }
 

预先感谢

付费偷看设置
发送
10条回答
我是小鹏鹏啊
1楼 · 2020-08-19 01:41.采纳回答

当前,@ sap/cds-odata-v2-adapter-proxy 1.4.19仅与大于3.21.3的CDS版本兼容。

一个新的CDS版本即将发布,并将在接下来的1-2天公开发布。

同时,我将发布一个新的@ sap/cds-odata-v2-adapter-proxy版本1.4.20,该版本应再次向后兼容CDS。

直到两个选项之一都可用,目前只能使用1.4.18版本。

歪着头看世界
2楼-- · 2020-08-19 01:40

您好 Oliver Klemenz

我进入我的JAVA 项目现在,使用以下设置出现相同的错误:

 @ sap/cds:3.34.1
 @ sap/cds-compiler:1.26.2
 @ sap/cds-dk:1.8.2
 @ sap/cds-foss:1.2.0
 @ sap/cds-odata-v2-adapter-proxy:1.4.30
 @ sap/cds-reflect:2.11.0
 @ sap/cds-runtime:1.1.1
 Node.js:v12.14.0 

我是否应该为此事发事件?
我还尝试将v2代理的版本降级到1.4.18或1.4.20,但没有成功。

最诚挚的问候,

Chris

clasier
3楼-- · 2020-08-19 01:44

你好史蒂文,

感谢您发布报告。 您当前使用哪个CDS版本?

看起来好像是从csn.json提供代理...对吗?

csn.json是如何生成的? csn.json上发生转换吗? 例如。 转换为OData ...?

您是否处于仅Node.js的情况?

似乎CSN已被编译器转换为OData,现在代理尝试再次将其转换为OData ...

代理需要处理原始CSN json,该命令由以下命令返回:

 cds srv -s all -o 

你可以尝试吗?

最诚挚的问候

Oliver

梦想连接
4楼-- · 2020-08-19 01:23

我在Cloud Foundry上作为Node.JS应用程序(MTA)运行。

 {
     " name":" MYAPP",
     " version":" 1.0.0",
     " description":"由cds init生成",
     " repository":" <在此处添加您的存储库>",
     "许可证":" ISC",
     " devDependencies":{
         " @ types/dotenv":" ^ 6.1.1",
         " @ types/http-proxy-agent":" ^ 2.0.1",
         " @ types/lodash":" ^ 4.14.123",
         " @ types/node":" ^ 11.13.0",
         " concurrently":" ^ 4.1.0",
         " nodemon":" ^ 1.18.10",
         " tslint":" ^ 5.15.0",
         " typescript":" ^ 3.4.2",
         " @ types/uuid":" ^ 3.4.7"
     },
     "依赖关系":{
         " @ sap/audit-logging":" ^ 3.1.0",
         " @ sap/cds":" ^ 3.21.3",
         " @ sap/cds-odata-v2-adapter-proxy":" ^ 1.4.19",
         " @ sap/cloud-sdk-core":" ^ 1.17.0",
         " @ sap/cloud-sdk-generator":" ^ 1.6.1",
         " @ sap/cloud-sdk-vdm-business-partner-service":" ^ 1.17.0",
         " dotenv":" ^ 8.2.0",
         "表达":" ^ 4.17.1",
         " hdb":" ^ 0.17.1",
         " uuid":" ^ 3.4.0",
         " uuidv4":" ^ 6.0.2"
     },
     "引擎": {
         "节点":" ^ 13.5.0"
     },
     "脚本":{
         " build":" cds build/all --clean",
         " deploy":" cds deploy",
         " start":"节点v2server"
     },
     " cds":{
         "要求":{
             "D b": {
                 " kind":" hana",
                 "型号":[
                     "D b",
                     " srv"
                 ]
             },
             " uaa":{
                 " kind":" xsuaa"
             }
         },
         " odata":{
             "版本":" v4"
         }
     },
     "文件":[
         "D b",
         " srv"
     ]
 } 
木偶小白
5楼-- · 2020-08-19 01:36

这是v2server.js的代码

/*没有控制台便是0 */
 "使用严格";

 const odatav2proxy = require(" @ sap/cds-odata-v2-adapter-proxy")
 const express = require(" express")
 const cds = require(" @ sap/cds")

 const {PORT = 3000} = process.env
 const app = express()

 cds.connect()
 cds.serve(" all")。in(app)
 const odataURL ="/img/myapp_srv";
//将任何重定向到服务根
 app.get("/",(req,res)=> {
     res.redirect(odataURL);
 });

 app.use(odatav2proxy({port:PORT}))

 app.listen(PORT,()=> console.info(`服务器在http:\/\/localhost:$ {PORT}上监听))



 
d56caomao
6楼-- · 2020-08-19 01:39

CSN.json是在运行(本地)cds build/all

之后创建的

它也与运行后创建的代码100%相同:

cds srv -s all -o

在我的gen文件夹(已部署到CF)中,有一个csn.json。

我通过运行以下步骤进行部署:

cf push -f gen/db

cf push -f gen/srv --random-route
蓋茨
7楼-- · 2020-08-19 01:39

我的本​​地版本:

 @ sap/cds-dk:1.4.4
 @ sap/cds:3.21.3
 @ sap/cds-compiler:1.21.1
 @ sap/cds-foss:1.1.0
 @ sap/cds-messaging:1.5.0
 @ sap/cds-reflect:2.9.2
 @ sap/cds-rest:1.3.0
 @ sap/cds-services:1.22.0
 @ sap/generator-cds:2.11.1 

一周热门 更多>