How can I re-use queries in CRUD OOP CFCs?
===

I have a simple CFC class that handles CRUD on a Product - Product.cfc.

I am extending the class to allow for additional properties based on the application - for instance CartProduct.cfc extends Product.cfc in order to allow for a Quantity property to be included.

In the Base Product.cfc class, I first pass in an ID, and use the ID in my read() method to retrieve the data from the database:

    <cffunction name="read" returntype="Query">
        <cfquery name="qData" datasource="mydb">
            SELECT    description
            FROM      mySKUTable
            WHERE     id = '#VARIABLES.Sku#'
        </cfquery>
        
        <cfreturn qData />
    </cffunction>
    
    <cffunction name="setSku" returntype="Product">
        <cfargument name="Sku" type="String" required="true" />
        <cfscript>
            var qData = QueryNew("");
    
            VARIABLES.Sku = ARGUMENTS.Sku;
            
            qData = read();
    
            VARIABLES.description = qData.description;
        </cfscript>
    </cffunction>

I want to extend this in CartProduct.cfc to retrieve and set the Quantity from a different table using the read() method:

    <cffunction name="read" returntype="Query">
        <cfquery name="qData" datasource="mydb">
            SELECT    quantity
            FROM      myCartTable
            WHERE     id = '#VARIABLES.Sku#'
        </cfquery>
        
        <cfreturn qData />
    </cffunction>
    
    <cffunction name="setSku" returntype="Product">
        <cfargument name="Sku" type="String" required="true" />
        <cfscript>
            var qData = QueryNew("");
    
            THIS = SUPER.setSku(Sku);
            
            qData = read();
    
            VARIABLES.quantity = qData.quantity;
        </cfscript>
    </cffunction>

When I do this, only the extended read() is called. This is fine, this is as designed. However, I'm looking for a way to have *BOTH* read() methods called, so I can first set the properties in the base class, and then set the Properties in the extended class.

Any thoughts on this?

p.s. I know I'm not using CFQUERYPARAM or validating my inputs, etc. I left that crap out in order to keep this simple, so please don't give me those suggestions right now.