Hello, Nino.

Thanks for a quick reply!

I think clearing the Hibernate session cache (via Session.clear()) before
saving the city will work for me in this case.

However the second concern remains. Consider a complex form with tens of
drop down choice or list components. I want them loaded once (during the
rendering phase) or reloaded upon page refresh (when the user refreshes a
page, they expect to see fresh reference data). During submit I would try to
avoid sucking in all that data from the database again.

I wonder if there is a solution to that or maybe some "Wicket design
pattern" to approach such situations.

Best regards,
Dimitrio

On 5/9/07, Nino Saturnino Martinez Vazquez Wael <[EMAIL PROTECTED]>
wrote:

Hi Dimitrio

The solution(possibly) to your first problem are to call flush on your
hibernate session. Altthough im far from a hibernate expert, this solved
our problems with that kind of exception. You could also try merge(), im
afraid im just guessing at this point.

regards Nino

Dimitrio wrote:
>
> Hello All,
>
> I am evaluating the possibility to use the Wicket / Spring / Hibernate
> stack for my next project (Spring / Hibernate being used for the
> middle tier + OpenSessionInViewFilter).
>
> Let me describe a simple test scenario that I am trying to implement -
> a City Editor panel. The panel contains a text field with a city name
> and a drop down choice with the available countries.
>
> The domain model (mapped to the DB via Hibernate) is the following:
>
> City
> ---------
> Long id;
> String name;
>
> @Cascade(SAVE_UPDATE)
> Country country;
>
> Country
> ------------
> Long id;
> String isoCode;
> String name;
>
> Upon construction, the Country drop down choice for the panel is
> provided with a LoadableDetachableModel that loads a list of all
> available countries from a CountryDao. The form itself has a
> CompoundPropertyModel for the city being edited.
>
> The page renders just fine, the country list is correctly reloaded
> upon F5 - everything as expected.
>
> However, when the user clicks Submit, the form component reloads the
> country list again (so the list ends up in the new Hibernate session
> cache) and when I try to save the city in onSubmit, I sometimes get a
> Hibernate exception with the following message:
>
> a different object with the same identifier value was already
> associated with the session: [test.wicket.Country#6]; nested exception
> is org.hibernate.NonUniqueObjectException: a different object with the
> same identifier value was already associated with the session:
> [test.wicket.Country#6]
>
> This exception only occurs if the user does not change the city's
> country. In that case the Country instance referenced by the city is
> different from the corresponding instance in Hibernate session cache
> and the SAVE_UPDATE cascading fails.
>
> So, my first question is whether there is a way to avoid this exception?
>
> The second thing is that I do not generally want all my reference data
> being completely reloaded on every submit.
>
> I really liked the way property editors were used in Spring to
> retrieve and validate reference data for such scenarios. In Spring I
> would have a CountryPropertyEditor that would retrieve the Country
> instance by an ISO code or ID and assign it to the city.
>
> So in Spring the submit would result in 2 statements like below:
>
> select from country where id=...
> update city where id=...
>
> and avoid the duplicate instances problem altogether.
>
> So, the second question is whether there is a way to not reload all
> the reference data upon submit? How do you address such scenarios in
> your Wicket applications?
>
>
> Many thanks!
>
> --Dimitrio
>
>
> ------------------------------------------------------------------------
>
>
-------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> ------------------------------------------------------------------------
>
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to