嵌入式实体
编辑教程嵌入式实体
通过使用embedded columns
,可以减少应用程序中的重复(使用组合而不是继承)。
嵌入列是一个列,它接受具有自己列的类,并将这些列合并到当前实体的数据库表中。
例如:
假设我们有User
,Employee
和Student
实体。
这些属性都有少量的共同点,first name
和 last name
属性。
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: string;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
isActive: boolean;
}
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class Employee {
@PrimaryGeneratedColumn()
id: string;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
salary: string;
}
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
@Entity()
export class Student {
@PrimaryGeneratedColumn()
id: string;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
faculty: string;
}
我们可以做的是通过创建一个包含firstName
和lastName
的新类:
import {Entity, Column} from "typeorm";
export class Name {
@Column()
first: string;
@Column()
last: string;
}
然后"connect"实体中的这些列:
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
import {Name} from "./Name";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: string;
@Column(type => Name)
name: Name;
@Column()
isActive: boolean;
}
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
import {Name} from "./Name";
@Entity()
export class Employee {
@PrimaryGeneratedColumn()
id: string;
@Column(type => Name)
name: Name;
@Column()
salary: number;
}
import {Entity, PrimaryGeneratedColumn, Column} from "typeorm";
import {Name} from "./Name";
@Entity()
export class Student {
@PrimaryGeneratedColumn()
id: string;
@Column(type => Name)
name: Name;
@Column()
faculty: string;
}
Name
实体中定义的所有列将合并为user
,employee
和student
:
+-------------+--------------+----------------------------+
| user |
+-------------+--------------+----------------------------+
| id | int(11) | PRIMARY KEY AUTO_INCREMENT |
| nameFirst | varchar(255) | |
| nameLast | varchar(255) | |
| isActive | boolean | |
+-------------+--------------+----------------------------+
+-------------+--------------+----------------------------+
| employee |
+-------------+--------------+----------------------------+
| id | int(11) | PRIMARY KEY AUTO_INCREMENT |
| nameFirst | varchar(255) | |
| nameLast | varchar(255) | |
| salary | int(11) | |
+-------------+--------------+----------------------------+
+-------------+--------------+----------------------------+
| student |
+-------------+--------------+----------------------------+
| id | int(11) | PRIMARY KEY AUTO_INCREMENT |
| nameFirst | varchar(255) | |
| nameLast | varchar(255) | |
| faculty | varchar(255) | |
+-------------+--------------+----------------------------+
这种方式可以减少实体类中的代码重复。 你可以根据需要在嵌入式类中使用尽可能多的列(或关系)。 甚至可以在嵌入式类中嵌套嵌套列。
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
选择支付方式:
立即支付
¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟