typeorm/typeorm
GitHub で見るVirtualColumn throws error when used in WHERE conditions
Open
#11,616 opened on 2025年8月21日
good first issue
説明
Issue description
Error when using VirtualColumn in a WHERE clause with createQueryBuilder
Expected Behavior
The query should expand the VirtualColumn definition and generate SQL similar to:
SELECT
`user`.`id` AS `user_id`,
`user`.`firstName` AS "user_firstName",
`user`.`lastName` AS "user_lastName"
CONCAT(`user`.`first_name`, ' ', `user`.`last_name`) AS `user_fullName`
FROM "user" "user"
LEFT JOIN `users` `user` ON `user`.`id`=`member`.`user_id`
AND (`user`.`deleted_at` IS NULL)
WHERE CONCAT("user"."firstName", ' ', "user"."lastName") = 'John Doe';
Actual Behavior
SELECT
`user`.`id` AS `user_id`,
`user`.`firstName` AS "user_firstName",
`user`.`lastName` AS "user_lastName"
CONCAT(`user`.`first_name`, ' ', `user`.`last_name`) AS `user_fullName`
FROM `circle_members` `member`
LEFT JOIN `users` `user` ON `user`.`id`=`member`.`user_id`
AND (`user`.`deleted_at` IS NULL)
WHERE `user`.`fullName` = 'John Doe';
"Unknown column 'user.fullName' in 'where clause'"
Steps to reproduce
User Entity
import { Entity, PrimaryGeneratedColumn, Column, VirtualColumn } from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
...
@VirtualColumn({
query: (alias) => `CONCAT(${alias}.firstName, ' ', ${alias}.lastName)`
})
fullName: string;
}
CircleMember Entity
@Entity('circle_members')
export class CircleMember {
@PrimaryGeneratedColumn({ name: 'id' })
id: number;
@Column({ name: 'user_id' })
userId: number;
...
}
QueryBuilder
const query = this.dataSource
.getRepository(CircleMember)
.createQueryBuilder('member')
.select(['user.id', 'user.firstName' , 'user.lastName' ,'user.fullName'])
.leftJoin('member.user', 'user')
if (search) {
query.andWhere(`user.fullName = :search`, {
search: 'John Doe',
});
}
My Environment
| Dependency | Version | | Operating System | MacOS | | Node.js version |22.16.0 | | Typescript version | 5.8.3 | | TypeORM version | 0.3.26 |
Additional Context
Allow VirtualColumn definitions to be expanded anywhere in QueryBuilder, not just in SELECT clauses.
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?
No, I don’t have the time and I’m okay to wait for the community / maintainers to resolve this issue.