2011-09-20 30 views
1

在ColdFusion中,非持久性屬性可能具有動態值嗎?屬性中的動態值ColdFusion ORM

一個例子是

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。

+0

OT:ColdFusion是一個詞。 –

+0

OT:拼寫固定。 – Leigh

回答

2

不,你不能在cfproperty中做到這一點。有兩個原因。

  1. 它根本不允許動態默認。所以你甚至不能做default =「#arrayNew(1)#」

  2. 就你的情況來說,這個類的getItem()方法在這段代碼運行時還不存在。

當我需要動態默認值時,我已經在init()構造函數方法中完成了它,以便它在創建對象後立即發生。

+0

我的意思是說init()只能運行在新的實體上嗎? –

0

實際上,你似乎試圖重新發明Hibernate公式,它們也可以通過CF的ORM系統訪問。

+0

我正在序列化ORM實體。我無法獲取映射的屬性,所以我想要一個標誌讓我的應用程序知道它需要再次調用它來獲取它。 –

0

使用Hibernate事件監聽器怎麼樣? Ben Nadel有a decent primer here

您可以使用preLoad或postLoad做你想做的事...