X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fhibernate%2Fstructure%2Ftree%2FTreeSRegistryDaoHibernate.java;h=fab18a19d6c17efe4b12db1ca75b038a4d3e2499;hb=4226558ccaf4d40b55d5d8492d0ef3476dfdf0c9;hp=8b421a896b10519ca3db565fe756885cb44a7c7d;hpb=b3a7956f82c9c947ee6f729053d5e17e18ff4f25;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java index 8b421a896..fab18a19d 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernate.java @@ -32,8 +32,12 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements getHibernateTemplate().save(registry); } - public void update(TreeSRegistry registry) { - getHibernateTemplate().update(registry); + public void update(TreeSRegistry registryArg) { + Session session = getSession(); + session.beginTransaction(); + TreeSRegistry registry = (TreeSRegistry)session.merge(registryArg); + session.update(registry); + session.getTransaction().commit(); } public TreeSRegistry getActiveTreeSRegistry() { @@ -47,14 +51,17 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements } } - public void syncPath(TreeSRegistry registry, - StructureRegistry localRegistry, TreeSPath path) { + public void syncPath(TreeSRegistry registryArg, + StructureRegistry localRegistry, TreeSPath pathArg) { Session session = getSession(); + session.beginTransaction(); + TreeSRegistry registry = (TreeSRegistry)session.merge(registryArg); + TreeSPath path = (TreeSPath)session.merge(pathArg); if (log.isTraceEnabled()) log.trace("Session#" + session.hashCode() + " " + session); syncPathImpl(registry, localRegistry, path, session); session.update(registry); - // update(registry); + session.getTransaction().commit(); } private void syncPathImpl(TreeSRegistry registry, @@ -70,7 +77,7 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements if (registry.getElement(path) == null) { final StructureElement element = getElement(registry, - localRegistry, path); + localRegistry, path, session); StructureElement elementPersisted = (StructureElement) session .merge(element); registry.register(path, elementPersisted); @@ -82,7 +89,7 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements } else { if (localRegistry != null) { StructureElement element = getElement(registry, localRegistry, - path); + path, session); if (element != null) { StructureElement elementPersisted = (StructureElement) session @@ -106,12 +113,13 @@ public class TreeSRegistryDaoHibernate extends HibernateDaoSupport implements } protected StructureElement getElement(TreeSRegistry registry, - StructureRegistry localRegistry, TreeSPath path) { + StructureRegistry localRegistry, TreeSPath path, + Session session) { StructureElement element; if (localRegistry != null) { element = localRegistry.getElement(path); - if (getSession().getSessionFactory().getClassMetadata( - element.getClass()) == null) { + if (session.getSessionFactory() + .getClassMetadata(element.getClass()) == null) { if (log.isTraceEnabled()) log.trace("Replace non-hibernate element " + element + " by a simple element.");