mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
fix: include asExpression columns in returning clause (#10632)
* fix: include asExpression columns in returning clause Closes: #8450 * test: add test for issue #8450
This commit is contained in:
parent
8aa8690f94
commit
f232ba7808
@ -1127,6 +1127,7 @@ export class EntityMetadata {
|
||||
return this.columns.filter((column) => {
|
||||
return (
|
||||
column.default !== undefined ||
|
||||
column.asExpression !== undefined ||
|
||||
column.isGenerated ||
|
||||
column.isCreateDate ||
|
||||
column.isUpdateDate ||
|
||||
|
||||
@ -274,7 +274,11 @@ export class ReturningResultsEntityUpdator {
|
||||
getUpdationReturningColumns(): ColumnMetadata[] {
|
||||
return this.expressionMap.mainAlias!.metadata.columns.filter(
|
||||
(column) => {
|
||||
return column.isUpdateDate || column.isVersion
|
||||
return (
|
||||
column.asExpression !== undefined ||
|
||||
column.isUpdateDate ||
|
||||
column.isVersion
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -286,6 +290,7 @@ export class ReturningResultsEntityUpdator {
|
||||
return this.expressionMap.mainAlias!.metadata.columns.filter(
|
||||
(column) => {
|
||||
return (
|
||||
column.asExpression !== undefined ||
|
||||
column.isUpdateDate ||
|
||||
column.isVersion ||
|
||||
column.isDeleteDate
|
||||
|
||||
16
test/github-issues/8450/entity/UserEntity.ts
Normal file
16
test/github-issues/8450/entity/UserEntity.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import { Entity } from "../../../../src/decorator/entity/Entity"
|
||||
import { PrimaryColumn } from "../../../../src/decorator/columns/PrimaryColumn"
|
||||
import { Column } from "../../../../src/decorator/columns/Column"
|
||||
|
||||
@Entity("user")
|
||||
export class UserEntity {
|
||||
@PrimaryColumn("int")
|
||||
id: number
|
||||
|
||||
@Column({
|
||||
type: "int",
|
||||
generatedType: "STORED",
|
||||
asExpression: "id * 2",
|
||||
})
|
||||
generated: number
|
||||
}
|
||||
38
test/github-issues/8450/issue-8450.ts
Normal file
38
test/github-issues/8450/issue-8450.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import "reflect-metadata"
|
||||
import {
|
||||
closeTestingConnections,
|
||||
createTestingConnections,
|
||||
reloadTestingDatabases,
|
||||
} from "../../utils/test-utils"
|
||||
import { UserEntity } from "./entity/UserEntity"
|
||||
import { expect } from "chai"
|
||||
import { DataSource } from "../../../src"
|
||||
|
||||
describe("github issues > #8450 Generated column not in RETURNING clause on save", () => {
|
||||
let connections: DataSource[]
|
||||
|
||||
before(
|
||||
async () =>
|
||||
(connections = await createTestingConnections({
|
||||
entities: [__dirname + "/entity/*{.js,.ts}"],
|
||||
enabledDrivers: ["postgres", "mysql"],
|
||||
})),
|
||||
)
|
||||
beforeEach(() => reloadTestingDatabases(connections))
|
||||
after(() => closeTestingConnections(connections))
|
||||
|
||||
it("should populate an object with generated column values after saving", () =>
|
||||
Promise.all(
|
||||
connections.map(async (connection) => {
|
||||
const user = new UserEntity()
|
||||
user.id = 100
|
||||
|
||||
expect(user.generated).to.be.undefined
|
||||
|
||||
await connection.manager.save(user)
|
||||
|
||||
expect(user.generated).to.be.a("number")
|
||||
expect(user.generated).to.be.equal(user.id * 2)
|
||||
}),
|
||||
))
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user