Orm 如何使Coldfusion反应器忽略表中的某些列

Orm 如何使Coldfusion反应器忽略表中的某些列,orm,coldfusion,coldfusion-10,reactor,Orm,Coldfusion,Coldfusion 10,Reactor,我在项目中使用Coldfusion 10+反应堆。我添加了一个新的时间戳字段,它将自动更新为当前的时间戳。当这个新字段不包括在Reactor对象中时,它就工作了,例如Dao、To、Record。但一旦重新生成ColdFusion对象,它就会失败 <cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig()

我在项目中使用Coldfusion 10+反应堆。我添加了一个新的时间戳字段,它将自动更新为当前的时间戳。当这个新字段不包括在Reactor对象中时,它就工作了,例如Dao、To、Record。但一旦重新生成ColdFusion对象,它就会失败

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>
那么,我怎么能忽略反应堆中的新领域呢

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>
以下是相关代码

<object name="Object">
    <hasOne name="XXXX">
        <relate from="KeyUUID" to="KeyUUID"/>
    </hasOne>
    ...
</object>
<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>

...
在我重新生成ColdFusion对象之后,ObjectDao.cfc中的create/update方法将包括我的新字段。根据我的数据库表,ObjectDao.cfc由Reactor重新生成。我希望这个新字段从Reactor对象中排除,例如Dao、To、Record

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>

插入到#Convention.FormatObjectName(getObjectMetadata())中#
(
...
#约定.formatInsertFieldName('newField','Object')#
)价值观(
...
)
...

我们现在通过更新ObjectDao.cfc来实现这一点

<cfquery name="qCreate" datasource="#_getConfig().getDsn()#" username="#_getConfig().getUsername()#" password="#_getConfig().getPassword()#">
    INSERT INTO #Convention.FormatObjectName(getObjectMetadata())#
    (
            ...
            #Convention.formatInsertFieldName('newField', 'Object')#

    ) VALUES (
            ...
            <cfqueryparam cfsqltype="cf_sql_timestamp"

            value="#arguments.to.newField#"

                null="#Iif(NOT Len(arguments.to.lastModifiedDBTime), DE(true), DE(false))#"
             /> 
    )
    ...
</cfquery>
<cffunction name="readFields" access="private" hint="I populate the table with fields." output="false" returntype="void">
...
    <cfloop query="qFields">
        <cfset blnProcess = true />
        <cfif structKeyExists(stcFieldsToSkip,arguments.Object.getName())>
           <cfif qFields.FIELD EQ stcFieldsToSkip[arguments.Object.getName()]>
               <cfset blnProcess = false />
           </cfif>
        </cfif>
        <cfif blnProcess>
            <!---
            mod by SPJ: in MySql 4 tinytext, text, mediumtext and longtext don't report their maxlength value, so we
            have to set it by hand.  The field lengths were obtained from http://www.cs.wcupa.edu/~rkline/mysqlEZinfo/data_types.html#Storage_requirements
        --->
            <cfswitch expression="#qFields.TYPE#">
                ...
            </cfswitch>
            <!--- end mod by SPJ --->

            <!--- create the field --->
            ...

            <!--- add the field to the table --->
            <cfset arguments.Object.addField(Field) />
        </cfif>
    </cfloop>
</cffunction>

...
...
...

你有任何代码可以使用吗?@JamesAMohler我添加了一些代码,但大多数代码都是由Reactor生成的。我想知道如何配置reactor.xml以忽略新列。非常感谢。似乎忽略尚未实现的字段!