我使用的是nestjs和typeorm(mysql)。
我正在输入orIgnore
以使用“插入忽略”,但我得到了与标题相同的错误。
Cannot update entity because entity id is not set in the entity.
下面是我的代码。
await this.userSearchRepository
.createQueryBuilder()
.insert()
.into(User_SEARCH)
.values({
userId: user.id,
etc1: user.name,
})
.orIgnore()
.execute();
下面是执行时在控制台中显示的查询。
INSERT IGNORE INTO `User_SEARCH `(`id`, `userId`, `etc1`,`etc2`) VALUES (DEFAULT, ?, ?, DEFAULT) -- PARAMETERS: [39,"aaaaaaa"]
SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'table_name' AND table_schema = DATABASE();
而当执行上述查询时,正常值 输出。
表结构如下。
CREATE TABLE User_SEARCH {
id INT primary key auto increment,
userId INT FK,
etc1 varchar(255) not null,
etc2 varchar(255) null
}
当我在mysql工作台中输入查询时,它工作正常。
如果我输入id:null
,它可以工作,但是有一个基本的解决方案吗?
@Entity()
export class User_SEARCH {
@PrimaryGeneratedColumn()
@IsNumber()
id: number;
@IsNumber()
@Column({ nullable: true })
userId: number;
@IsString()
@Column()
etc1: string;
@IsString()
@Column({nullable:true})
etc2: string;
@ManyToOne(() => User, (user) => user.userSearch, { onDelete: 'CASCADE' })
@JoinColumn({
referencedColumnName: 'id',
name: 'userId',
})
user: User;
}
1条答案
按热度按时间bqujaahr1#
updateEntity函数可能会对您有所帮助。
updateEntity:指示插入操作后是否必须更新实体。这可能会产生额外的查询或使用RETURNING / OUTPUT语句(取决于数据库)。默认情况下启用。
将其设置为
false
。