【问题标题】:Dynamic value in property for ColdFusion ORMColdFusion ORM 属性中的动态值
【发布时间】:2011-09-20 16:45:18
【问题描述】:

在 ColdFusion 中,非持久性属性是否有可能具有动态值?

一个例子是

   Item.cfc

   property name="myID" length="100"    type="string"   fieldtype="id" generator="guid";

   property name="hasImageFlag"  persistent=false  default="{isNull(getItem().getIcon())};

   property name="Icon"  fieldtype="many-to-one" fkcolumn="imageID" cfc="image" lazy="true";

所以在这个例子中 hasImageFlag 可能只是 isNull(getItem().getIcon()) ,它会返回 true 或 false。

【问题讨论】:

    标签: orm coldfusion coldfusion-9


    【解决方案1】:

    不,您不能在 cfproperty 中这样做。有两个原因。

    1. 它根本不允许动态默认值。所以你甚至不能做 default="#arrayNew(1)#"

    2. 在您的情况下,该类的 getItem() 方法在此代码运行时将不存在。

    当我需要动态默认值时,我已经在 init() 构造函数方法中完成了它,以便它在对象创建后立即发生。

    【讨论】:

    • 我说 init() 只在新的实体实体上运行是对的吗?
    【解决方案2】:

    实际上,您似乎正在尝试重新发明 Hibernate 公式,这些公式也可以通过 CF 的 ORM 系统访问。

    【讨论】:

    • 我正在序列化 ORM 实体。我无法获取映射的属性,所以我想要一个标志来让我的应用程序知道它需要再次调用来拉取它。
    【解决方案3】:

    使用 Hibernate 事件监听器怎么样? Ben Nadel 有a decent primer here

    您也许可以使用 preLoad 或 postLoad 做您想做的事情...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2019-12-21
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多