cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Quinn <jer...@media.demon.co.uk>
Subject Re: persisting re-arranged repeater-rows
Date Tue, 25 Nov 2003 14:22:47 GMT

On 25 Nov 2003, at 13:44, Hugo Burm wrote:

Hi Hugo, thanks for your help.

> What are you using for the Hibernate mapping? A Set or a List?

A java.util.List.

> I think you nee a List and set the <index> attribute (ch 5.2 of the
> Hibernate ref manual) to the index of your Woody ArrayList.

Albums are mapped like this (they use 'posn' as the index) :

<class name="uk.co.my.bean.Album" table="albums">
	<id name="id" column="id" type="long">
		<generator class="native"/>
	</id>
	<property name="title" type="string" length="128" not-null="true"/>
	<property name="text" type="string" length="1024" not-null="true"/>
	<property name="publishable" type="boolean" not-null="true"/>
	<property name="modified" type="timestamp"/>
	<many-to-one name="user" class="uk.co.my.bean.User" column="userid" 
not-null="true"/>
	<list name="resources" table="resources" cascade="all" lazy="true">
		<key column="albumid"/>
		<index column="posn"/>
		<one-to-many class="uk.co.my.bean.Resource"/>
	</list>
</class>

The Resource mapping looks like this :

<class name="uk.co.my.bean.Resource" table="resources">
	<id name="id" column="id" type="long">
		<generator class="native"/>
	</id>
	<property name="text" type="string" length="1024" not-null="true"/>
	<property name="reference" type="string" length="512" not-null="true"/>
</class>

This jUnit tests successfully re-arrange the Resources :

// re-arrange test
((Resource)resources.get (0)).setText ("blah");
Resource temp = (Resource)resources.get (1);
resources.set (1, resources.get (0));
resources.set (0, temp);
AlbumPeer.save(SESSION, album);
SESSION.refresh (album);
assertTrue ("Resources not re-arranged", ((Resource)album.getResources 
().get (1)).getText ().equals ("blah"));

This is basically a copy of how Woody does it.
When this runs, I see the 'posn' being updated by Hibernate.

However, when you call form.save (album); and then persist the Album, 
the reverse-binding has not effected the positioning of the Persisted 
Resources.

Hibernate is not updating 'posn' when the Albums is persisted after the 
re-arrangement, when that re-arrangement has been done by Woody.

> I guess one of the problems will be sorting after you added a new item,
> because the new item does not yet have an id in Woody.

I have not got that far yet ;)

regards Jeremy

> Hugo Burm
>
>
>> -----Original Message-----
>> From: Jeremy Quinn [mailto:jeremy@media.demon.co.uk]
>> Sent: 25 November 2003 13:47
>> To: dev@cocoon.apache.org
>> Subject: persisting re-arranged repeater-rows
>>
>>
>> Hi All,
>>
>> I am struggling with persisting re-arranged repeater rows.
>>
>> I have a form that edits an Album Bean which has a (java.util.List)
>> 'Resources' Property which is populated by Resource Beans.
>>
>> I have the List of Resource Beans represented in the form as a
>> repeater-widget, with move-up, move-down buttons.
>>
>> When I click one of the up/down buttons, the repeater-rows get
>> re-arranged correctly in the form.
>>
>> When I save the Album (I am using Hibernate, with cascading)
>> the change
>> in the ordering is not persisted.
>>
>> I am clearly missing something ..... has anyone else had with
>> a similar
>> issue?
>>
>> Any suggestions?
>>
>> Thanks for any help
>>
>> regards Jeremy
>>
>

Mime
View raw message