【问题标题】:ColdFusion 10 - ORM Child Object Search & CalculationsColdFusion 10 - ORM 子对象搜索和计算
【发布时间】:2013-11-25 18:58:32
【问题描述】:

在 CF10 中已经定义了一个非常简单的 ORM 关系。我们有温度传感器,它们在 tempSensor 对象中定义了与建筑物的多对一关系。

tempSensors ORM 持久化组件

id_tempSensor - PK currentReading - 整数值 id_Space - 与以下 PK 的多对一关系

空格ORM持久化组件

id_space - PK 名称 - 字符串 描述 - 字符串

我想对这段关系做两件事:

  1. 在“空间”组件中编写一个函数,该函数返回映射到它的所有 tempSensors 对象的数组。结果的排序/排序并不重要;如有必要,我们可以使用标准 CF 数组函数重新排序。

  2. 在“空间”组件中编写一个函数,计算映射到该空间的所有温度传感器的平均温度读数。因此,如果有五个温度传感器映射到该空间,则将所有当前温度读数相加,除以五并返回结果。

我已经到处寻找#1 的简单解决方案,也许是 HQL 来定义一个简单的查询?

我认为 HQL 对于 #2 可能是最快和最有效的,因为我们将直接进入持久层,而不是在 CF 中返回结果、实例化对象并对 CF 对象运行算术。

【问题讨论】:

    标签: orm coldfusion coldfusion-10


    【解决方案1】:
    1. 如果您为数组类型的属性sensors 定义空间上的一对多关系,那么您要查找的函数就是返回传感器数组的 getTempSensors()。

    2. 一旦你得到 #1 的工作,只需遍历数组并计算你的平均温度。

    http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WS5FFD2854-7F18-43ea-B383-161E007CE0D1.html#WSDDE3349B-ECE1-450d-B5B1-0BCACDCC6736

    【讨论】:

    • 感谢您的回复。我也在想同样的事情,对 Space 对象进行一对多,但想知道“跨越流”并为两个对象映射两个关系是否是正确的基本架构决策。
    • @user3033620 双向映射实际上是设置这些 ORM 关系的首选方式。但是,请确保您的代码保持真实,例如当您在 Space 的集合中添加新的 Sensor 时,请确保 Sensor 也设置 Space。生成的访问器不会自动为您执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2012-11-17
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多