This must be a very common question... Moved my persistence over to Hibernate and as you expect this was a godsend and only took a couple of hours.
Naturally, 2 weeks later I am still trying to get it to work ;) I have managed to get it to work pretty well by switching cascade off everywhere. Leaving me with a problem of transactions... The best solution reported on the internet (hibernate site) was to extend the SentinelEngine and wrap all calls in a transaction. The solution below was pretty naive and I was wondering if someone has a better solution as I am guessing that someone has a better solution (I am not using Spring yet). public class SentinelEngine extends BaseEngine { private static final long serialVersionUID = 7768775316660511012L; protected void setupForRequest(RequestContext context) { super.setupForRequest(context); // Start a session and a transaction System.out.println("Building up the session and and starting a transaction"); // IDAOFactory datastore = AbstractDAOFactory.soleInstance(); // datastore.getController().start(); // Transaction transaction = (Transaction)datastore.getController().beginTrasnsaction(); // Visit visit = (Visit)getVisit(); // if (visit == null) { // visit = new Visit(); // } // visit.setTransaction(transaction); // setVisit(visit); } protected void cleanupAfterRequest(IRequestCycle cycle) { super.cleanupAfterRequest(cycle); // Commit the transaction and clear down the session System.out.println("committing the transaction and tearing down the session"); // IDAOFactory datastore = AbstractDAOFactory.soleInstance(); // Visit visit = (Visit)getVisit(); // datastore.getController().commit(visit.getTransaction()); // datastore.getController().finish(); // visit.setTransaction(null); } } public class HibernateController implements IController { public void start() { SessionFactory.currentSession(); } public Object getSession() { Session session = SessionFactory.currentSession(); return session; } public Object beginTrasnsaction() { Session session = SessionFactory.currentSession(); return session.beginTransaction(); } public void commit(Object transaction) { ((Transaction)transaction).commit(); } public void finish() { Session session = SessionFactory.currentSession(); session.flush(); SessionFactory.closeSession(); } } -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 268.2.1/277 - Release Date: 8/03/2006 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]