ColdFusion ORM的属性中的动态值

时间:2011-09-20 16:45:19

标签: orm coldfusion coldfusion-9

在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。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

您可以使用preLoad或postLoad ...

执行您想要的操作
相关问题