Orm 如何使Coldfusion反应器忽略表中的某些列
我在项目中使用Coldfusion 10+反应堆。我添加了一个新的时间戳字段,它将自动更新为当前的时间戳。当这个新字段不包括在Reactor对象中时,它就工作了,例如Dao、To、Record。但一旦重新生成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()
<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以忽略新列。非常感谢。似乎忽略尚未实现的字段!