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博客

相关推荐
Xudde.8 分钟前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
2402_8462957712 分钟前
eDNA常用的基因片段
笔记
我命由我1234520 分钟前
Function Calling 模型
人工智能·python·学习·ai·学习方法·ai编程·ai写作
别动我齐刘海40 分钟前
实时控制学习2
linux·c++·人工智能·学习·算法
AI视觉网奇1 小时前
3Dconnexion 按照笔记
笔记
海海不掉头发1 小时前
软件开发方法第七周笔记_CSDN博客
人工智能·笔记·学习·软件工程
Vae_Mars1 小时前
幂等性学习笔记
笔记·学习·wpf
Xudde.2 小时前
HackMe 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
先途检测认证2 小时前
塑料、硅胶、不锈钢材质,欧盟食品接触的测试项目有什么区别?
笔记·材质
跨知易知识产权3 小时前
美国发明专利和外观专利保护期限分别是多久,起算时间怎么界定?
笔记