Yep, in fact I fixed it just before I saw your message. It's down to this line of code:
getHibernateTemplate().setFlushMode(HibernateAccessor.FLUSH_EAGER);
I had updated the other object so it was dirty (but not ready for saving). So, when I did my read, it saw that the object was dirty and tried to persist it (which caused me problems because it wasn't ready to save).
The fix was to move the read statement to be the first line of code, and then after that I could modify my object and not worry about it being persisted in a half-baked state.
The Hibernate debug was very useful because it showed me the following detail
Code:
DEBUG entity.AbstractEntityPersister - com.lsb.uk.mqs.value.mas.MasProduct.description is dirty
DEBUG entity.AbstractEntityPersister - com.lsb.uk.mqs.value.mas.MasProduct.productStatus is dirty
DEBUG entity.AbstractEntityPersister - com.lsb.uk.mqs.value.mas.MasProduct.lastUpdateDate is dirty
DEBUG def.DefaultFlushEntityEventListener - Updating entity: [com.lsb.uk.mqs.value.mas.MasProduct#671]
Although having debug on EVERYTHING in Hibernate really really slows things down :)
Thanks for the reply