- 其他装饰器
@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等),因为它们目前还在实验状态。期待将来看到他们的文档。
