@@ -322,6 +322,7 @@ export abstract class BaseOperationHandler<Schema extends SchemaDef> {
322322 parentAlias : string ,
323323 ) {
324324 let result = query ;
325+ let hasNonVirtualField = false ;
325326
326327 for ( const [ field , payload ] of Object . entries ( selectOrInclude ) ) {
327328 if ( ! payload ) {
@@ -330,6 +331,7 @@ export abstract class BaseOperationHandler<Schema extends SchemaDef> {
330331
331332 if ( field === '_count' ) {
332333 result = this . buildCountSelection ( result , model , parentAlias , payload ) ;
334+ hasNonVirtualField = true ;
333335 continue ;
334336 }
335337
@@ -338,6 +340,7 @@ export abstract class BaseOperationHandler<Schema extends SchemaDef> {
338340 // scalar field - skip virtual fields as they're computed at runtime
339341 if ( ! fieldDef . virtual ) {
340342 result = this . dialect . buildSelectField ( result , model , parentAlias , field ) ;
343+ hasNonVirtualField = true ;
341344 }
342345 } else {
343346 if ( ! fieldDef . array && ! fieldDef . optional && payload . where ) {
@@ -355,9 +358,14 @@ export abstract class BaseOperationHandler<Schema extends SchemaDef> {
355358 // regular relation
356359 result = this . dialect . buildRelationSelection ( result , model , field , parentAlias , payload ) ;
357360 }
361+ hasNonVirtualField = true ;
358362 }
359363 }
360364
365+ if ( ! hasNonVirtualField ) {
366+ throw createInternalError ( 'Cannot select only virtual fields' , model ) ;
367+ }
368+
361369 return result ;
362370 }
363371
0 commit comments