Чтобы транзакции работали нужно
queryRunner передать
createQueryBuilder.
Касательно примечания в конце вопроса, ответ - нет. Так транзакции работать не будут.
const queryRunner = this.dataSource.createQueryRunner();
queryRunner.connect();
queryRunner.startTransaction();
try {
const u = await this.repository
.createQueryBuilder('u', queryRunner)
.update({ password: passwordHash })
.where('email = :email', { email: user.email })
.returning('*')
.updateEntity(true)
.execute();
const p = await this.passwordUpdateLogsRepository
.createQueryBuilder('p', queryRunner)
.insert()
.values({ user: { id: user.id } })
.execute();
queryRunner.commitTransaction();
return new HttpException(lang.ru.passwordChanged, HttpStatus.OK);
} catch (error) {
console.log(error);
queryRunner.rollbackTransaction();
throw new BadRequestException(lang.ru.error);
} finally {
queryRunner.release();
}