- 其他装饰器
@Index
@Unique
@Check
@Transaction
,@TransactionManager
和@TransactionRepository
@EntityRepository
其他装饰器
@Index
此装饰器允许你为特定列创建数据库索引。它还允许你将列或列标记为唯一。此装饰器可以应用于列或实体本身。单列索引时使用或多列索引时使用。例如:
@Entity()
export class User {
@Index()
@Column()
firstName: string;
@Index({ unique: true })
@Column()
lastName: string;
}
@Entity()
@Index(["firstName", "lastName"])
@Index(["lastName", "middleName"])
@Index(["firstName", "lastName", "middleName"], { unique: true })
export class User {
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
middleName: string;
}
了解有关 indices的更多信息。
@Unique
此装饰器允许你为特定列创建数据库唯一约束。该装饰器只能应用于实体本身。
例如:
@Entity()
@Unique(["firstName"])
@Unique(["lastName", "middleName"])
@Unique("UQ_NAMES", ["firstName", "lastName", "middleName"])
export class User {
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
middleName: string;
}
注意:MySQL 将唯一约束存储为唯一索引
@Check
此装饰器允许为特定列创建数据库检查约束。该装饰器只能应用于实体本身。
例如:
@Entity()
@Check(`"firstName" <> 'John' AND "lastName" <> 'Doe'`)
@Check(`"age" > 18`)
export class User {
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
age: number;
}
注意:MySQL 不支持检查约束。
@Transaction
, @TransactionManager
和 @TransactionRepository
@Transaction
用于方法上,并将其所有的执行包裹到单个数据库事务中。必须使用@TransportManager
提供的管理器执行所有数据库查询或者使用@TransactionRepository
注入的事务存储库。例如:
@Transaction()
save(@TransactionManager() manager: EntityManager, user: User) {
return manager.save(user);
}
@Transaction()
save(user: User, @TransactionRepository(User) userRepository: Repository<User>) {
return userRepository.save(user);
}
@Transaction()
save(@QueryParam("name") name: string, @TransactionRepository() userRepository: UserRepository) {
return userRepository.findByName(name);
}
注意:事务中的所有操作必须且只能使用提供的
EntityManager
实例或注入的存储库。使用任何其他查询源(全局管理器,全局存储库等)将导致错误和错误。
了解有关 transactions的更多信息。
@EntityRepository
将自定义类标记为实体存储库。例如:
@EntityRepository()
export class UserRepository {
/// ... 定制存储库方法 ...
}
你可以使用connection.getCustomRepository
或entityManager.getCustomRepository
方法获取任何自定义创建的存储库。
了解有关 custom entity repositories的更多信息。
注意:本参考文献中没有的记录一些装饰器(如
@Tree
,@ChildEntity
等),因为它们目前还在实验状态。期待将来看到他们的文档。