托管关联和cds-odata-v2-adapter-proxy的问题

2020-09-02 15:59发布

         点击此处--->   EasySAP.com群内免费提供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

干杯

皮埃尔

         点击此处--->   EasySAP.com群内免费提供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

干杯

皮埃尔

付费偷看设置
发送
6条回答
wang628962
1楼 · 2020-09-02 16:44.采纳回答

皮埃尔你好,

我刚完成修复。 它将是下一版本的一部分,计划于下周末发布。

我注意到的一件事:

您应更改PlannedTask的CSV文件( https://github.com/pdominique/cap-todo/blob/master/db/csv/todo-PlannedTasks.csv ),如下所示:

 TASK_ID; PERSON_ID; STARTDATE; ENDDATE; TENTATIVE 
1; 1; 2019-08-23T00:00:00Z; 2019-08-23T00:00:00Z; 1
2; 3; 2019-08 -24T00:00:00Z; 2019-08-24T00:00:00Z; 0

当您使用CDS类型的DateTime时,值的存储如上所示。 只有这样,SQLite数据库才能相应地查询它们。 否则,将无法通过密钥找到实例。

最诚挚的问候

Oliver

打个大熊猫
2楼-- · 2020-09-02 16:31

我也注意到了这个问题,并进行了一些调查。 问题在于,在这种情况下,cds解析器(csn json)会将所有元素创建为键。 然后,中间件使用该属性来创建元数据uri。

一个结论就是问题出在cds解析器中,但是元数据($ metadata)文档是正确的。

Doze时光
3楼-- · 2020-09-02 16:45

Hello Pierre,

感谢您发现并报告此问题。 我们将对其进行研究,并尽快提供下一版本的修复程序。

最诚挚的问候

Oliver

半个程序猿
4楼-- · 2020-09-02 16:36

感谢快速修复!

注意:我从现有项目(Java-HANA)中复制了csv,并且此DateTime格式没有任何问题。 如果这不适用于SQLite,则将格式更改为Date或修改csv文件。 :-)

clasier
5楼-- · 2020-09-02 16:36

你好皮埃尔,

好消息,我们刚刚发布了@ sap/cds-odata-v2-adapter-proxy @ 1.4.1。

如果可以解决您的问题,请看看。

再次感谢您报告此问题。

最诚挚的问候

Oliver

compass1988
6楼-- · 2020-09-02 16:25

您好,Oliver,

我刚刚进行了快速测试,问题似乎已经解决。 谢谢!

Pierre

一周热门 更多>