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

相关推荐
Slow菜鸟10 小时前
AI学习篇(五) | awesome-design-md 使用说明
人工智能·学习
ZC跨境爬虫10 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
狐狐生风11 小时前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
狐狐生风11 小时前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
努力努力再努力FFF13 小时前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
OBiO201314 小时前
Cell | 突破AAV载体容量限制!路中华/姜玉武/刘太安团队开发AAVLINK系统实现大基因递送
笔记
智者知已应修善业14 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
sakiko_15 小时前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
Alice-YUE16 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript