-
-
Notifications
You must be signed in to change notification settings - Fork 611
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
In some cases, after selecting a list of entities with populated relations, change set contains nullable reference property. Here is repo to reproduce - https://github.com/yaroslavyal/mikroorm-nullable-ref-bug
To Reproduce
Please check out this test
import 'reflect-metadata';
import {
LoadStrategy,
MikroORM,
} from '@mikro-orm/core';
import { PostgreSqlDriver } from '@mikro-orm/postgresql';
import {Book} from "./entities/book.entity";
import {User} from "./entities/user.entity";
import {ProfileInfo} from "./entities/profileInfo.entity";
describe('Check', () => {
let orm: MikroORM<PostgreSqlDriver>;
beforeAll(async () => {
orm = await MikroORM.init<any>({
forceUtcTimezone: true,
forceUndefined: false,
debug: true,
type: 'postgresql',
user: 'user',
port: 2345,
password: 'password',
host: 'localhost',
loadStrategy: LoadStrategy.JOINED,
tsNode: false,
dbName: 'mydb',
entities: [Book, User, ProfileInfo],
});
await orm.getSchemaGenerator().dropSchema();
await orm.em.execute('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";')
await orm.getSchemaGenerator().createSchema();
});
afterAll(async () => {
await orm.close(true);
});
test(`change set is empty`, async () => {
const em = orm.em.fork()
const user = em.create(User, {
name: 'user1',
});
em.persist(user);
await em.persist(em.create(Book, {
name: 'book1',
user,
})).flush();
await em.persist(em.create(Book, {
name: 'book2',
user,
})).flush();
await em.clear()
const em1 = orm.em.fork();
await em1.find(Book, {}, { populate: ['user'] })
const uow1 = em1.getUnitOfWork(true)
// property profileInfo of User entity is nullable and appears in computeChangeSets
uow1.computeChangeSets();
expect(uow1.getChangeSets()).toHaveLength(0);
});
});
Expected behavior
Change set is empty
Versions
| Dependency | Version |
|---|---|
| node | 16.13.1 |
| typescript | 4.9.4 |
| mikro-orm | 5.6.2 |
| your-driver | postgresql |
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working