Both should work, if you discard the block it should be reloaded on next
request for the object.

If you discard the blockcontent it should clear the array that contains it,
so that next lazy load should include it.

Not sure why you aren't doing the updates with Transfer in your admin tool,
if you have it there to discard, why can't you do your updates with it?

Mark



On Tue, Sep 14, 2010 at 8:31 AM, James Allen <slingsho...@googlemail.com>wrote:

> Hi Mark,
>
> Yes it's "blockmanagement.blockcontent" which is a 3 field lookup table:
>
> lnkIDBlock
> lnkIDContent
> SortOrder
>
> The admin system queries the lookup table to show the pages that are
> allocated to the block in question. On the admin page the user is able to
> re-order the pages which causes the 'SortOrder' field to be updated in the
> lookup table.
>
> My problem is knowing how to correctly clear the blockcontent composition
> in the block object. I have tried looping each item in the lookup table and
> clearing each one:
>
> <cfset var pages = getBlock(arguments.blockID).getPagesArray()>
> <cfset var x = 0>
> <cfset var keys = StructNew()>
>
> <cfloop from="1" to="#ArrayLen(pages)#" index="x">
>     <cfset keys["lnkIDBlock"] = pages[x].getlnkIDBlock()>
>     <cfset keys["lnkIDContent"] = pages[x].getlnkIDContent()>
>
>     <cfset
>
> getTransfer().discardByClassAndKey(className="blockmanagement.blockcontent",key=keys)>
> </cfloop>
>
> This was my last ditch attempt but the sortorder of the
> blockmanagement.blockcontent composition within the block object does not
> change until I reload transfer.
>
> I assumed that if I discarded the specific block in question that this
> would also cause the blockcontent composition to be cleared as well. This is
> not the case though?
>
> Any ideas on how to correctly clear the cache in this case?
>
> Thanks for your help,
> James.
>
> On 13 September 2010 23:20, Mark Mandel <mark.man...@gmail.com> wrote:
>
>> Okay,
>>
>> That's starting to make more sense.
>>
>> Which items are actually being edited outside of Transfer? blockcontent ?
>>
>> If that's the case, what is happening when you discard the blockcontent
>> that is being edited?
>>
>> Mark
>>
>> On Mon, Sep 13, 2010 at 2:03 AM, James Allen 
>> <slingsho...@googlemail.com>wrote:
>>
>>>  Hi Mark,
>>>
>>>
>>>
>>> The problem is that my admin system is updating the data outside of
>>> Transfer. What I normally do is trigger a cache clear on the relevant object
>>> being edited which works fine. However, when updating a set of lookup table
>>> items (with sortorder), I can't find a way to tell Transfer to clear the
>>> lookup table objects so that they are then read in again on the next object
>>> get.
>>>
>>>
>>>
>>> Regarding the generated methods for sorting, would I call
>>> sortOneToMany("pages") on the block object being edited to force a reload of
>>> the lookup table to pick up the new sort order?
>>>
>>>
>>>
>>> <onetomany name="Pages" lazy="true">
>>>
>>>             <link to="blockmanagement.blockcontent" column="lnkIDBlock"/>
>>>              <collection type="array">
>>>                      <order property="sortOrder" order="asc"/>
>>>              </collection>
>>>
>>> </onetomany>
>>>
>>>
>>>
>>> Is there no way to just tell the lookup table to be cleared from the
>>> cache apart from stopping caching on this relationship?
>>>
>>>
>>>
>>> James.
>>>
>>> ---
>>>
>>> *James  Allen*
>>>
>>> *E:* ja...@jamesallen.name
>>>
>>> *Blog:* http://jamesallen.name
>>>
>>> *Twitter:* @CFJamesAllen (Coldfusion / Web development)
>>>
>>> *Twitter:* @jamesallenuk (General)
>>>
>>> *Twitter: *...@jamesallenvoice (Voiceover)
>>>
>>>
>>>
>>> *From:* transfer-dev@googlegroups.com [mailto:
>>> transfer-...@googlegroups.com] *On Behalf Of *Mark Mandel
>>> *Sent:* 10 September 2010 14:42
>>>
>>> *To:* transfer-dev@googlegroups.com
>>> *Subject:* Re: [transfer-dev] Problem with cache and composite onetomany
>>> with sortorder
>>>
>>>
>>>
>>> But if you update an item through Transfer, any collection it is in
>>> should re-sort itself implicitly once it is saved.
>>>
>>> Are you not seeing that?
>>>
>>> If you need, there is also an explicit generated function for telling a
>>> collection to sort.:
>>> http://docs.transfer-orm.com/wiki/Generated_Methods.cfm
>>>
>>> Mark
>>>
>>> On Wed, Sep 8, 2010 at 7:34 PM, James Allen <slingsho...@googlemail.com>
>>> wrote:
>>>
>>> Hi Mark,
>>>
>>>
>>>
>>> I'm not quite sure what you mean. I need to clear the cache so that the
>>> sort order of the lookup table is refreshed whenever this field is modified
>>> (i.e. when the admin system is used to re-order the pages allocated to each
>>> block).
>>>
>>>
>>>
>>> At the lowest level I tried looping each item stored in the lookup table
>>> based on both composite id's but that does not clear the lookup table
>>> objects from the cache (blockmanagement.blockcontent).
>>>
>>>
>>>
>>> What is the correct way of refreshing the lookup table without simply
>>> turning the cache off for this relationship (which I assume is not the only
>>> answer)?
>>>
>>>
>>>
>>> Sorry if I've misunderstood though.
>>>
>>>
>>>
>>> James.
>>>
>>>
>>>
>>> ---
>>>
>>> *James  Allen*
>>>
>>> *E:* ja...@jamesallen.name
>>>
>>> *Blog:* http://jamesallen.name
>>>
>>> *Twitter:* @CFJamesAllen (Coldfusion / Web development)
>>>
>>> *Twitter:* @jamesallenuk (General)
>>>
>>> *Twitter: *...@jamesallenvoice (Voiceover)
>>>
>>>
>>>
>>> *From:* transfer-dev@googlegroups.com [mailto:
>>> transfer-...@googlegroups.com] *On Behalf Of *Mark Mandel
>>> *Sent:* 08 September 2010 01:29
>>> *To:* transfer-dev@googlegroups.com
>>> *Subject:* Re: [transfer-dev] Problem with cache and composite onetomany
>>> with sortorder
>>>
>>>
>>>
>>> Stupid question - why do you need to clear the cache?
>>>
>>> If you remove an object from the cache, it will be removed, and any
>>> relationships it is in will be cleared.
>>>
>>> So work bottom up, rather than top down.
>>>
>>> Mark
>>>
>>> On Mon, Sep 6, 2010 at 9:20 PM, James Allen <slingsho...@googlemail.com>
>>> wrote:
>>>
>>> Hi guys,
>>>
>>> I've having problems working out how to correctly remove a lookup
>>> table from the cache which is constructed using a onetomany
>>> composition but using compositeid's to allow the use of a manytomany
>>> lookup table with a sortorder field.
>>>
>>> I'm running Transfer 1.1 final, Railo and MS SQL 2005 on Server 2003.
>>>
>>> Here is my transfer.xml showing the objects:
>>>
>>>                <package name="blockmanagement">
>>>                        <object name="building" table="tblBuildings"
>>> decorator="model.blockmanagement.building">
>>>                                <id name="id" type="numeric" />
>>>                                <property name="BuildingName"
>>> type="string" column="BuildingName" /
>>> >
>>>                                <property name="smallImage" type="string"
>>> column="SmallImage" />
>>>
>>>                                <!-- Link between a building and the
>>> blocks it contains -->
>>>                                <onetomany name="Blocks" proxied="true"
>>> lazy="true">
>>>                                        <link to="blockmanagement.block"
>>> column="lnkIDBuilding"/>
>>>
>>>                                        <collection type="array">
>>>                                                <order
>>> property="BlockName" order="asc" />
>>>                                        </collection>
>>>                                </onetomany>
>>>                        </object>
>>>
>>>                        <object name="block" table="tblBlocks"
>>> decorator="model.blockmanagement.block">
>>>                                <id name="id" type="numeric" />
>>>                                <property name="blockName" type="string"
>>> column="BlockName" />
>>>                                <property name="buildingID" type="numeric"
>>> column="lnkIDBuilding" /
>>> >
>>>                                <property name="contactEmail"
>>> type="string" column="ContactEmail" /
>>> >
>>>
>>>                                <!-- Link between the block and the
>>> content pages it has -->
>>>                                <onetomany name="Pages" lazy="true">
>>>                                <link to="blockmanagement.blockcontent"
>>> column="lnkIDBlock"/>
>>>                                <collection type="array">
>>>                                                <order
>>> property="sortOrder" order="asc"/>
>>>                                </collection>
>>>                                </onetomany>
>>>                        </object>
>>>
>>>                        <object name="blockcontent"
>>> table="lnkBlock_Content">
>>>                                <compositeid>
>>>                                        <property name="lnkIDBlock"/>
>>>                                        <property name="lnkIDContent"/>
>>>                </compositeid>
>>>
>>>                                <property name="lnkIDBlock" type="numeric"
>>> column="lnkIDBlock" />
>>>                                <property name="lnkIDContent"
>>> type="numeric"
>>> column="lnkIDContent" />
>>>                                <property name="sortOrder" type="numeric"
>>> column="SortOrder" />
>>>
>>>                                <!-- Link between a block and a news item
>>> -->
>>>                                <manytoone name="Page" lazy="false">
>>>                                        <link to="content.content"
>>> column="lnkIDContent"/>
>>>                                </manytoone>
>>>                        </object>
>>>                </package>
>>>
>>> The only object I'm not showing in the above is the content.content
>>> (pages) object as its not part my issue.
>>>
>>> As you'll see from the above, a building can have a number of blocks.
>>> Each block can have a number of content pages. Now these content pages
>>> are composed using a onetomany to the 'blockcontent' object which is
>>> actually a lookup table with the following d/b structure:
>>>
>>> lnkIDBlock
>>> lnkIDContent
>>> SortOrder
>>>
>>> This object then has a manytoone composition to link the lookup table
>>> to the content pages the block has. I used this method so that I can
>>> handle 'SortOrder' field in the lookup table.
>>>
>>> The problem I'm having is that I can't find a way to remove the lookup
>>> table data from the cache. My first thought was that if I simply
>>> remove the block from the cache:
>>>
>>> <cfset
>>>
>>> getTransfer().discardByClassAndKey(className="blockmanagement.block",key=arguments.blockID)>
>>>
>>> ... that this would be enough to clear the pages lookup table
>>> composition as well?
>>>
>>> However, this does not work and the old sortorder is maintained of the
>>> frontend of the site until a full transfer restart.
>>>
>>> I then thought that perhaps I need to loop the content of the lookup
>>> table and individually clear each 'blockcontent' object:
>>>
>>> <cfset var pages = getBlock(arguments.blockID).getPagesArray()>
>>> <cfset var x = 0>
>>> <cfset var keys = StructNew()>
>>>
>>> <cfloop from="1" to="#ArrayLen(pages)#" index="x">
>>>     <cfset keys["lnkIDBlock"] = pages[x].getlnkIDBlock()>
>>>     <cfset keys["lnkIDContent"] = pages[x].getlnkIDContent()>
>>>
>>>     <cfset
>>>
>>> getTransfer().discardByClassAndKey(className="blockmanagement.blockcontent",key=keys)>
>>> </cfloop>
>>>
>>> However, still no luck with this and the sortorder does not change so
>>> I assume the above code does not remove the blockcontent objects from
>>> the cache?
>>>
>>> I have also tried removing the building from the cache as well (as I
>>> retrieve the blocks via the building object) but still no joy.
>>>
>>> Sorry for the long post, but would love some insight on this. I'm
>>> obviously doing something wrong but I just can't work out what.
>>>
>>> Thanks,
>>> James.
>>>
>>> --
>>> Before posting questions to the group please read:
>>>
>>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>>
>>> Try out the new Transfer ORM Custom Google Search:
>>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "transfer-dev" group.
>>> To post to this group, send email to transfer-dev@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/transfer-dev?hl=en
>>>
>>>
>>>
>>>
>>> --
>>> E: mark.man...@gmail.com
>>> T: http://www.twitter.com/neurotic
>>> W: www.compoundtheory.com
>>>
>>> cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia
>>> http://www.cfobjective.com.au
>>>
>>> Hands-on ColdFusion ORM Training
>>> www.ColdFusionOrmTraining.com
>>>
>>> --
>>>
>>> Before posting questions to the group please read:
>>>
>>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>>
>>> Try out the new Transfer ORM Custom Google Search:
>>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "transfer-dev" group.
>>> To post to this group, send email to transfer-dev@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/transfer-dev?hl=en
>>>
>>> --
>>> Before posting questions to the group please read:
>>>
>>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>>
>>> Try out the new Transfer ORM Custom Google Search:
>>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "transfer-dev" group.
>>> To post to this group, send email to transfer-dev@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/transfer-dev?hl=en
>>>
>>>
>>>
>>>
>>> --
>>> E: mark.man...@gmail.com
>>> T: http://www.twitter.com/neurotic
>>> W: www.compoundtheory.com
>>>
>>> cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia
>>> http://www.cfobjective.com.au
>>>
>>> Hands-on ColdFusion ORM Training
>>> www.ColdFusionOrmTraining.com
>>>
>>> --
>>> Before posting questions to the group please read:
>>>
>>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>>
>>> Try out the new Transfer ORM Custom Google Search:
>>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "transfer-dev" group.
>>> To post to this group, send email to transfer-dev@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/transfer-dev?hl=en
>>>
>>> --
>>> Before posting questions to the group please read:
>>>
>>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>>
>>> Try out the new Transfer ORM Custom Google Search:
>>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "transfer-dev" group.
>>> To post to this group, send email to transfer-dev@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/transfer-dev?hl=en
>>>
>>
>>
>>
>> --
>> E: mark.man...@gmail.com
>> T: http://www.twitter.com/neurotic
>> W: www.compoundtheory.com
>>
>> cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia
>> http://www.cfobjective.com.au
>>
>> Hands-on ColdFusion ORM Training
>> www.ColdFusionOrmTraining.com
>>
>> --
>> Before posting questions to the group please read:
>>
>> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>>
>> Try out the new Transfer ORM Custom Google Search:
>> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>>
>> You received this message because you are subscribed to the Google Groups
>> "transfer-dev" group.
>> To post to this group, send email to transfer-dev@googlegroups.com
>> To unsubscribe from this group, send email to
>> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/transfer-dev?hl=en
>>
>
>  --
> Before posting questions to the group please read:
>
> http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer
>
> Try out the new Transfer ORM Custom Google Search:
> http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8
>
> You received this message because you are subscribed to the Google Groups
> "transfer-dev" group.
> To post to this group, send email to transfer-dev@googlegroups.com
> To unsubscribe from this group, send email to
> transfer-dev+unsubscr...@googlegroups.com<transfer-dev%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/transfer-dev?hl=en
>



-- 
E: mark.man...@gmail.com
T: http://www.twitter.com/neurotic
W: www.compoundtheory.com

cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia
http://www.cfobjective.com.au

Hands-on ColdFusion ORM Training
www.ColdFusionOrmTraining.com

-- 
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

Try out the new Transfer ORM Custom Google Search:
http://www.google.com/cse/home?cx=002375903941309441958:2s7wbd5ocb8

You received this message because you are subscribed to the Google Groups 
"transfer-dev" group.
To post to this group, send email to transfer-dev@googlegroups.com
To unsubscribe from this group, send email to 
transfer-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en

Reply via email to