- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我的实体:
@Entity()
export class Game extends BaseEntity {
@PrimaryGeneratedColumn({
name: "id",
})
private _id: number;
@Column({
name: "name",
type: "varchar",
nullable: false,
})
private _name: string;
get id(): number {
return this._id;
}
set id(id: number) {
this._id = id;
}
get name(): string {
return this._name;
}
set name(name: string) {
this._name = name;
}
}
当我尝试创建一个新游戏时,我想使用 Repository API .
所以我做的是:
import { getRepository } from "typeorm";
import { Game } from "../entities/game.entity";
import { InsertGameConfig } from "../interfaces/entities/game";
public async insert(config: InsertGameConfig) {
return await getRepository(Game).create(config).save();
}
然后像这样调用插入函数:
await insert({
name: "test",
});
但是当我查看 mysql 查询日志时,我发现:
INSERT INTO `game`(`id`, `name`) VALUES (DEFAULT, DEFAULT)
但是,如果我创建实例并像这样设置每个值:
const game = new Game();
game.name = config.name;
return await game.save();
然后它就可以正常工作了,所以:
INSERT INTO `game`(`id`, `name`) VALUES (DEFAULT, "test")
来自 TypeOrm 文档:
create
- 创建 User 的新实例。可选择接受具有用户属性的对象文字,这些属性将被写入新创建的用户对象。
const user = repository.create(); // same as const user = new User();
const user = repository.create({
id: 1,
firstName: "Timber",
lastName: "Saw"
}); // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";
我尝试将类的属性设置为公开,然后 create
正常工作,但是当它们是私有(private)的并且我使用 getters/setters 时,它不起作用。
最佳答案
我从未见过任何 ORM(在任何语言中)会使用对象私有(private)字段作为数据字段。为什么会有这样的期望?除了特定的类实例之外,私有(private)字段在任何其他代码中都是不可见的。所以,ORM 不会意识到它们,因此你不应该用装饰器/属性来标记它们,这没有任何意义。即使 ORM 可以找到私有(private)属性,它又如何猜测哪个 getter/setter 应该与属性 _name
或任何其他属性一起使用?
在docs他们建议只使用具有普通公共(public)属性的类,如下所示:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
}
而且这似乎是目前唯一正确的方法。
关于mysql - TypeORM 存储库创建不设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51860432/
我知道 typeorm 可以创建整个 db 模式,甚至可以将数据库模式与实体定义同步(请参阅 synchronize 中的 Connection Options ) 但在生产中,我想要求 typeor
我有一个 Role Entity 和一个 Route Entity,它们是树形结构,它们是 ManyToMany 关系。 现在我想通过 RoleRepository.find({relations:
我已经设置了 logging: true当createConnection()来自 TypeORM ,在大多数情况下都可以正常工作。 但是有一种情况,我的数据字段之一来自特定的 query/mutat
在 Rails 上,每个测试用例都会创建一个 ActiveRecord 事务,它允许测试所有内容,然后将数据库恢复到原始状态,而不必删除所有表或任何可能影响播种机等的内容。 可以在 Typeorm 上
Note 与 Subject 具有多对多关系 查询它的最佳方式是什么?我喜欢编写以下内容来获取给定注释上的所有主题: const subjectRepo = connection.getRepos
我使用 UUID 作为我的实体的主键,它工作得很好。但我想删除那些破折号。 现在 ID 被保存为 8e5365f4-3d42-4274-bafc-93b97bd6e3f2 36 个字符 我想要的是 8
我一整天都在尝试将实体保存到 MySQL 数据库中,遇到了巨大的困难。我正在使用 NestJS 和 TypeORM。 teacher.entity.ts import { BeforeInsert,
我也想在前端使用我用 TypeORM 创建的实体。有没有一种干净的方法可以做到这一点?或者我应该继续这样做。 此时,我的文件结构如下所示(前端的 Angular 8): /server /enti
我想得到一个 basic setup使用 TypeORM 工作,并在设置后收到此错误。 这是一个 REPL(只需执行 yarn install && yarn db:dev 后跟 yarn db:mi
我正在尝试通过 Nest/TypeORM 构建 SAAS 产品,我需要按子域配置/更改数据库连接。 customer1.domain.com => connect to customer1 datab
如何将 TypeORM 与 Better-sqlite3 一起使用? 上官方documentation ,有一个section形式更好-sqlite3。 我已经通过 typeorm@latest 安装
操作系统:macOS Sierra v 10.12.6 我正在尝试使用 typeorm 在 Typescript 中构建一个应用程序,这是我第一次使用其中任何一个。 我使用了以下两种方法来安装 typ
有没有一种简单的方法可以使用 DataSource 在 typeORM v.0.3.6 中播种数据? typeorm-seeding 似乎使用已弃用的 Connection。 最佳答案 找到这个包裹
我正在做一门类(class),我们使用 express-node postgres 和 react(使用 typescript)和 typeORM。到目前为止一切都运行良好,但我面临 typeORM
尽管进行了大量研究和反复试验,但不幸的是,我还没有针对以下用例的完美解决方案:一个用户有多个帖子,这被正确地实现为一对多关系。我想为用户加载他的所有帖子,但不是帖子的所有属性,只有某些属性。 方法 1
我用 NestJS 和 ORM TypeORM 做一个 API 我有实体: 用户 关系类型 UserRelationshipType(带有用户和关系类型 ForeignKey) 和关系(与 userR
我有两个实体 Tag 和 Photo: // tag.entity.ts import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm
我有以下要保存的实体: @Entity('approvals') export class Approval { @PrimaryGeneratedColumn() id: string;
我有命令: .leftJoinAndSelect("permission.user", "user") .where("permissi
我是使用 typeorm 的新手,这是我第二次与 typeorm 混淆,我有以下查询: SELECT t1.a,t1.b,t2.a (SELECT TOP 1 t1.a FROM table1
我是一名优秀的程序员,十分优秀!