点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在使用CDS OData v4服务的新OData v2适配器代理(@ sap/cds-odata-v2-adapter-proxy),但是托管关联存在问题:
db \ data-model.cds:
命名空间待办事项; 实体任务{ 密钥ID:整数; title:字符串; 完成:布尔值; plannedTasks:与plannedTasks.task = $ self上的许多PlannedTasks的关联; } 实体人物{ 密钥ID:整数; 名称:字符串; plannedTasks:与plannedTasks.person = $ self上的许多PlannedTasks关联。 } 实体PlannedTasks { 关键任务:任务关联; 关键人物:人民协会; 键startDate:DateTime; key endDate:DateTime; 暂定:布尔值; }
获取/v2/todo/People?$ expand = plannedTasks
{ " d":{ "结果":[{ " ID":1 " name":" Joe", " plannedTasks":{ "结果":[{ " startDate":"/img/Date(1566518400000)/", " endDate":"/img/Date(1566518400000)/", "暂定":是的, " task_ID":1 " person_ID":1 " __metadata":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(task = undefined,person = undefined,startDate = datetimeoffset'2019-08-23T00:00:00Z',endDate = datetimeoffset'2019-08- 23T00:00:00Z',task_ID = 1,person_ID = 1)", " type":" TodoService.PlannedTasks", " etag":" W/\" QMV7j0dk99JE5TC7oLbhyym0Kkqvdle9NMPCOMMVHWE = \"" }, "任务":{ " __deferred":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(任务=未定义,人=未定义,startDate = datetimeoffset'%2FDate(1566518400000)%2F',endDate = datetimeoffset'%2FDate(1566518400000)% 2F',task_ID = 1,person_ID = 1)/task" } }, "人":{ " __deferred":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(task = [object%20Object],person = undefined,startDate = datetimeoffset'%2FDate(1566518400000)%2F',endDate = datetimeoffset'%2FDate (1566518400000)%2F',task_ID = 1,person_ID = 1)/人" } } }] }, " __metadata":{ " uri":" http://localhost:4004/v2/todo/People(1)", " type":" TodoService.People", " etag":" W/\" QMV7j0dk99JE5TC7oLbhyym0Kkqvdle9NMPCOMMVHWE = \"" } }, { " ID":2 " name":" Jane", " plannedTasks":{ "结果":[] }, " __metadata":{ " uri":" http://localhost:4004/v2/todo/People(2)", " type":" TodoService.People", " etag":" W/\" QMV7j0dk99JE5TC7oLbhyym0Kkqvdle9NMPCOMMVHWE = \"" } }, { " ID":3, " name":" Bob", " plannedTasks":{ "结果":[{ " startDate":"/img/Date(1566604800000)/", " endDate":"/img/Date(1566604800000)/", "暂定":假, " task_ID":2 " person_ID":3, " __metadata":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(task = undefined,person = undefined,startDate = datetimeoffset'2019-08-24T00:00:00Z',endDate = datetimeoffset'2019-08- 24T00:00:00Z',task_ID = 2,person_ID = 3)", " type":" TodoService.PlannedTasks", " etag":" W/\" QMV7j0dk99JE5TC7oLbhyym0Kkqvdle9NMPCOMMVHWE = \"" }, "任务":{ " __deferred":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(任务=未定义,人=未定义,startDate = datetimeoffset'%2FDate(1566604800000)%2F',endDate = datetimeoffset'%2FDate(1566604800000)% 2F',task_ID = 2,person_ID = 3)/任务" } }, "人":{ " __deferred":{ " uri":" http://localhost:4004/v2/todo/PlannedTasks(task = [object%20Object],person = undefined,startDate = datetimeoffset'%2FDate(1566604800000)%2F',endDate = datetimeoffset'%2FDate (1566604800000)%2F',task_ID = 2,person_ID = 3)/person" } } }] }, " __metadata":{ " uri":" http://localhost:4004/v2/todo/People(3)", " type":" TodoService.People", " etag":" W/\" QMV7j0dk99JE5TC7oLbhyym0Kkqvdle9NMPCOMMVHWE = \"" } } ] } }
实体密钥错误,因此我无法更新PlannedTasks实体:
http://localhost:4004/v2/todo/PlannedTasks(任务=未定义,人=未定义,startDate = datetimeoffset'2019-08-23T00:00:00Z',endDate = datetimeoffset'2019-08-23T00: 00:00Z',task_ID = 1,person_ID = 1)
使用OData v2和CDS Java的类似服务没有任何问题。
这是源代码: https://github.com/pdominique/cap-todo
干杯
皮埃尔
皮埃尔你好,
我刚完成修复。 它将是下一版本的一部分,计划于下周末发布。
我注意到的一件事:
您应更改PlannedTask的CSV文件( https://github.com/pdominique/cap-todo/blob/master/db/csv/todo-PlannedTasks.csv ),如下所示:
当您使用CDS类型的DateTime时,值的存储如上所示。 只有这样,SQLite数据库才能相应地查询它们。 否则,将无法通过密钥找到实例。
最诚挚的问候
Oliver
我也注意到了这个问题,并进行了一些调查。 问题在于,在这种情况下,cds解析器(csn json)会将所有元素创建为键。 然后,中间件使用该属性来创建元数据uri。
一个结论就是问题出在cds解析器中,但是元数据($ metadata)文档是正确的。
Hello Pierre,
感谢您发现并报告此问题。 我们将对其进行研究,并尽快提供下一版本的修复程序。
最诚挚的问候
Oliver
感谢快速修复!
注意:我从现有项目(Java-HANA)中复制了csv,并且此DateTime格式没有任何问题。 如果这不适用于SQLite,则将格式更改为Date或修改csv文件。 :-)
你好皮埃尔,
好消息,我们刚刚发布了@ sap/cds-odata-v2-adapter-proxy @ 1.4.1。
如果可以解决您的问题,请看看。
再次感谢您报告此问题。
最诚挚的问候
Oliver
您好,Oliver,
我刚刚进行了快速测试,问题似乎已经解决。 谢谢!
Pierre
一周热门 更多>