Skip to content

Saving an entity is not possible if only columns with update: false are changed #10249

@grainrigi

Description

@grainrigi

Issue description

Saving an entity results in error if only columns with update: false are changed.

Expected Behavior

Ignore changes for update: false columns and no update action occurs.
(Of course, not to throw anything)

Actual Behavior

Throws the following error:

/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/query-builder/UpdateQueryBuilder.ts:681
            throw new UpdateValuesMissingError()
                  ^
UpdateValuesMissingError: Cannot perform update query because update values are not defined. Call "qb.set(...)" method to specify updated values.
    at UpdateQueryBuilder.createUpdateExpression (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/query-builder/UpdateQueryBuilder.ts:681:19)
    at UpdateQueryBuilder.getQuery (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/query-builder/UpdateQueryBuilder.ts:53:21)
    at UpdateQueryBuilder.getQueryAndParameters (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/query-builder/QueryBuilder.ts:507:28)
    at UpdateQueryBuilder.execute (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/query-builder/UpdateQueryBuilder.ts:142:50)
    at updateSubject (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/persistence/SubjectExecutor.ts:617:63)
    at Array.map (<anonymous>)
    at SubjectExecutor.executeUpdateOperations (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/persistence/SubjectExecutor.ts:669:34)
    at SubjectExecutor.execute (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/persistence/SubjectExecutor.ts:148:20)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async EntityPersistExecutor.execute (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/node_modules/src/persistence/EntityPersistExecutor.ts:182:21)
    at async main (/Users/xxxxx/WorkDir/poc/typeorm-save-update-false/index.ts:50:3)

Steps to reproduce

  1. Clone this repository https://github.com/grainrigi/typeorm-save-update-false/tree/main
  2. npm install
  3. docker compose up -d
  4. npm run migrate:run
  5. npm run start

node.js and docker installation is required.

My Environment

Dependency Version
Operating System MacOS X Ventura 13.5
Node.js version 18.15.0
Typescript version 5.1.6
TypeORM version 0.3.17

Additional Context

No response

Relevant Database Driver(s)

  • aurora-mysql
  • aurora-postgres
  • better-sqlite3
  • cockroachdb
  • cordova
  • expo
  • mongodb
  • mysql
  • nativescript
  • oracle
  • postgres
  • react-native
  • sap
  • spanner
  • sqlite
  • sqlite-abstract
  • sqljs
  • sqlserver

Are you willing to resolve this issue by submitting a Pull Request?

Yes, I have the time, and I know how to start.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions