【问题标题】:CF9 ORM Replicate Left Outer JoinCF9 ORM 复制左外连接
【发布时间】:2009-12-17 10:50:00
【问题描述】:

我正在使用 CF9 中的 ORM 功能,但对于如何复制左外连接查询有点卡住了。..

我有一个任务列表 CFC

component output="false" persistent="true"{
  property name="iTaskListID" fieldtype="id" generator="native";
  property name="sTitle" ormtype="string" length="50";
  property name="task" fieldtype="one-to-many" cfc="Task" fkcolumn="iTaskListID";
}

还有一个任务 CFC

component output="false" persistent="true"{
  property name="iTaskID" fieldType="id" generator="native";
  property name="sTitle" notnull="true" type="string";
  property name="dtCreated" ormtype="date";
  property name="iListingID" ormtype="integer";
  property name="User" fieldtype="many-to-one" cfc="Users" fkcolumn="iUserID";
  property name="iTaskListID" ormtype="integer";
}

然后我执行 entityLoad

 <cfset results = entityLoad("TaskList",url.iTaskListID,true)>
 <cfset resultsQuery = entityToQuery(results)>

但是,当我尝试使用 resultsQuery 时,我无法访问任务 cfc 属性。例如

cfoutput>
 <cfloop query="resultsQuery">
   #resultsQuery.iTaskID#
  </cfloop>
</cfoutput>

将产生错误 Element ITASKID is undefined in RESULTSQUERY。

有人有什么建议吗?

非常感谢

【问题讨论】:

    标签: hibernate orm coldfusion-9


    【解决方案1】:

    entityToQuery 不集成关系属性,仅加载 Hibernate 实体内的本机属性。执行&lt;CFDUMP var="#resultsQuery#"&gt;,您只会在查询中看到 iTaskListID 和 sTitle 字段(根据您的示例)。

    没有理由将 entityLoad 输出(一个对象,因为您传入 ID 和 unique=true)转换为查询。直接在 results var 中访问对象,并通过循环输出 results.getTask() 来访问关系,这将输出一个 Task 对象数组(TaskList 与 Task 是一对多的关系)。

    <cfloop array="#results.getTask()#" index="obj">
       #obj.getITaskID()#
    </cfloop>
    

    不是我推荐的,但如果你真的想通过查询方法访问它,请改为调用它:

    <cfset taskQuery = entityToQuery(results.getTask())>
    <cfoutput query="taskQuery">
        #taskQuery.iTaskID#
    </cfoutput>
    

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2017-02-26
      • 2018-10-10
      • 1970-01-01
      • 2012-08-16
      • 2021-03-24
      • 2018-04-08
      相关资源
      最近更新 更多