SAP学习笔记 - BTP CAP开发02 - Assosication,Composition,?$expand=books

上一章讲了SAP学习笔记 - BTP CAP开发01 - 新建BAS Project,npm install, cds init,cds watch,cds add data --records 5

https://blog.csdn.net/shi_ly/article/details/159884366

本章继续学习CAP开发的知识。

目录,

1,Projects

[1-1,Assosication 表关联 1:1](#1-1,Assosication 表关联 1:1)

[1-2,Association 表关联:1:N](#1-2,Association 表关联:1:N)

[1-3,加 Author Service](#1-3,加 Author Service)

1-4,Composition

[1-5,加 Chapters Service](#1-5,加 Chapters Service)


下面是详细内容。

1,Projects

1-1,Assosication 表关联 1:1

复制代码
entity Books : cuid, managed {
    Title  : String;
    Author : Association to Author;
}

entity Author : cuid, managed {
    Name : String;
}

因为咱们这里用的UUID作为Key,所以它们是通过这个Key进行关联的

1-2,Association 表关联:1:N

复制代码
entity Books : cuid, managed {
    title  : String;
    author : Association to Author;
}

entity Author : cuid, managed {
    name : String;
    books : Association to many Books on books.author = $self;
}

也可以同样,删掉 data,然后用命令 cds data --records 5 来重建

这里也加一个常用快捷键

Shift+Alt+F ==》格式化代码

Shift+Alt+向下箭头 ==》拷贝上一行代码

1-3,加 Author Service

复制代码
using {Bookstore.db as db} from '../db/schema';

service BookstoreService {

    entity Books   as projection on db.Books;
    entity Authors as projection on db.Author;


}

然后可以用cds watch,打开 http://localhost:4004

都可以看到数据了

如果想看两个表关联,可以在URL加 ?$expand=books

[https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books](https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books "https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Authors?$expand=books")

就可以看到关联了哈

1-4,Composition

其实就是父子。

跟关联(Association)不同,没有父,就不会有子。

比如一本书(Books)里面有很多章节(Chapters),但是没有书,就不会有章节这个东西。

复制代码
entity Books : cuid, managed {
    title    : String;
    author   : Association to Author;
    Chapters : Composition of many Chapters
                   on Chapters.book = $self;
}

entity Author : cuid, managed {
    name  : String;
    books : Association to many Books
                on books.author = $self;
}

entity Chapters : cuid, managed {
        number : Integer;
    key book   : Association to Books;
}

建这个东西的用途就是,删父的时候,子也一起删掉了,跟DB里面那个级联删除似的。

同样,用 cds data --records 5重建数据

但是注意1点,父表里面是不存在Composition字段的,

比如Books表里,没有Chapters字段,但是Chapter表里, 有Books字段

其实,不仅是Composition,

Association也一样,1对多的情况,1的那一方并不能存在多的那一方的字段

比如Author可以写很多书,Author表里就没有Books字段

但是Books表里必须有Author字段

1-5,加 Chapters Service

复制代码
using {Bookstore.db as db} from '../db/schema';

service BookstoreService {

    entity Books   as projection on db.Books;
    entity Authors as projection on db.Authors;
    entity Chapters as projection on db.Chapters;

}

同样的,加 ?$expand=Chapters,你也可以打开一本里有多少章:

[https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters](https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters "https://port4004-workspaces-ws-fwdqw.us10.trial.applicationstudio.cloud.sap/odata/v4/bookstore/Books?$expand=Chapters")

以上就是本篇的全部内容。

如果大家觉得还行,希望大家多点赞,收藏,转发,感谢!

更多SAP顾问业务知识请点击下面目录链接或东京老树根的博客主页

https://blog.csdn.net/shi_ly/category_12216766.html

东京老树根-CSDN博客

相关推荐
前进的李工2 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
正在走向自律4 小时前
【3/5】人工智能训练师 三级/高级工 考证学习方向:从“独立执行”到“设计、归因与全链条负责”
人工智能·学习·人工智能训练师·注方案设计·数据质控负责人·模型评测与调优辅助·ai训练项目交付
蒸蒸yyyyzwd4 小时前
后端学习笔记三个知识
笔记·八股
CCIE-Yasuo6 小时前
网络安全-学习数据库-Mysql-2
数据库·学习·mysql
La Pulga6 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao7 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析
li星野7 小时前
【学习记录】逻辑分析仪完全入门:从品牌方案到采样率、存储深度的核心概念解析
学习
旖旎夜光7 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
ACP广源盛139246256738 小时前
选型笔记:Type‑C 扩展坞方案评估|DP1.2 转 HDMI2.0 桥接芯片 GSV2201D@ACP
笔记·硬件架构·硬件工程·视频·国产芯片
WEI_YANG_JU8 小时前
初中数学教学中合作学习的研究与实践
学习