Author: athimel Date: 2012-05-22 16:15:30 +0200 (Tue, 22 May 2012) New Revision: 2493 Url: http://nuiton.org/repositories/revision/topia/2493 Log: Disable JPA based ID generation and let Topia do it as initialy Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-it.properties trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-legacy.properties trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-mapping.properties trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java trunk/topia-persistence/src/main/resources/org/nuiton/topia/persistence/TopiaEntityAbstract-orm.xml Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDAOImpl.java 2012-05-22 14:15:30 UTC (rev 2493) @@ -186,7 +186,7 @@ // entityAbstract.setTopiaContext(getContext()); // // // save entity -// getSession().persist(entity); +// getEntityManager().persist(entity); // getContext().getFiresSupport().warnOnUpdateEntity(entity); // return entity; // } catch (PersistenceException eee) { @@ -258,16 +258,20 @@ // // on fait un save maintenant, car puisqu'on a creer l'entity au // // travers du DAO, on s'attend a l'avoir a disposition tout de // // suite pour les requetes sans avoir a faire un update dessus -// getSession().persist(result); +// getEntityManager().persist(result); // getContext().getFiresSupport().warnOnCreateEntity(result); // return result; } protected E create0(E result) throws TopiaException { + // XXX AThimel 22/05/2012 Add it back here because it does not work in PrePersist event + String topiaId = TopiaId.create(entityClass); + result.setTopiaId(topiaId); + // on fait un save maintenant, car puisqu'on a creer l'entity au // travers du DAO, on s'attend a l'avoir a disposition tout de // suite pour les requetes sans avoir a faire un update dessus - getSession().persist(result); + getEntityManager().persist(result); getContext().getFiresSupport().warnOnCreateEntity(result); return result; } @@ -275,7 +279,7 @@ @Override public E update(E e) throws TopiaException { try { - getSession().merge(e); + getEntityManager().merge(e); getContext().getFiresSupport().warnOnUpdateEntity(e); return e; } catch (PersistenceException eee) { @@ -286,7 +290,7 @@ @Override public void delete(E e) throws TopiaException { try { - getSession().remove(e); + getEntityManager().remove(e); getContext().getFiresSupport().warnOnDeleteEntity(e); } catch (PersistenceException eee) { throw new TopiaException(eee); @@ -576,12 +580,12 @@ } /** - * Renvoie la Session contenue dans le contexte + * Renvoie l'EntityManager fournit par le context * * @return jpa session * @throws TopiaException if any pb */ - EntityManager getSession() throws TopiaException { + EntityManager getEntityManager() throws TopiaException { return getContext().getEntityManager(); } Modified: trunk/topia-persistence/src/main/resources/org/nuiton/topia/persistence/TopiaEntityAbstract-orm.xml =================================================================== --- trunk/topia-persistence/src/main/resources/org/nuiton/topia/persistence/TopiaEntityAbstract-orm.xml 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence/src/main/resources/org/nuiton/topia/persistence/TopiaEntityAbstract-orm.xml 2012-05-22 14:15:30 UTC (rev 2493) @@ -2,9 +2,7 @@ <entity-mappings version="2.0" xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"> <mapped-superclass class="org.nuiton.topia.persistence.TopiaEntityAbstract" access="FIELD"> <attributes> - <id name="topiaId" access="FIELD"> - <generated-value strategy="IDENTITY"/> - </id> + <id name="topiaId" access="FIELD"/> <basic name="topiaCreateDate"> <temporal>TIMESTAMP</temporal> </basic> Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java =================================================================== --- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/framework/TopiaHibernateEntityListener.java 2012-05-22 14:15:30 UTC (rev 2493) @@ -168,10 +168,11 @@ TopiaEntity entity = castToTopiaEntityOrNull(event.getEntity()); TopiaContextImplementor entityContext = findContext(entity); - // Using JPA mapping, must generate id here - Class<?> entityInterface = TopiaPersistenceUtil.getEntityContract(entity.getClass()); - String topiaId = TopiaId.create(entityInterface); - entity.setTopiaId(topiaId); + // TODO AThimel 22/05/2012 Is it really necessary ? It fails for me +// // Using JPA mapping, must generate id here +// Class<?> entityInterface = TopiaPersistenceUtil.getEntityContract(entity.getClass()); +// String topiaId = TopiaId.create(entityInterface); +// entity.setTopiaId(topiaId); if (entityContext != null && entity != null) { Object[] entityState = event.getState(); Modified: trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java =================================================================== --- trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence-hibernate/src/main/java/org/nuiton/topia/persistence/TopiaHibernatePersistenceProvider.java 2012-05-22 14:15:30 UTC (rev 2493) @@ -155,7 +155,8 @@ TopiaHibernateEntityListener.class.getName(); for (EventType type : EVENT_TYPES) { - String key = AvailableSettings.EVENT_LISTENER_PREFIX + "." + type.eventName(); + String typeName = type.eventName(); + String key = AvailableSettings.EVENT_LISTENER_PREFIX + "." + typeName; hibernateProperties.put(key, entityListenerFQN); } Modified: trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-it.properties =================================================================== --- trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-it.properties 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-it.properties 2012-05-22 14:15:30 UTC (rev 2493) @@ -4,7 +4,7 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect -topia.use.hibernate.mapping.files=true +topia.use.hibernate.mapping.files=false topia.connection.username=sa topia.connection.password=sa topia.connection.driver_class=org.h2.Driver Modified: trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-legacy.properties =================================================================== --- trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-legacy.properties 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-legacy.properties 2012-05-22 14:15:30 UTC (rev 2493) @@ -4,7 +4,7 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect -topia.use.hibernate.mapping.files=true +topia.use.hibernate.mapping.files=false topia.connection.username=sa topia.connection.password=sa topia.connection.driver_class=org.h2.Driver Modified: trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-mapping.properties =================================================================== --- trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-mapping.properties 2012-05-16 22:59:11 UTC (rev 2492) +++ trunk/topia-persistence-hibernate/src/test/resources/TopiaContext-mapping.properties 2012-05-22 14:15:30 UTC (rev 2493) @@ -4,7 +4,7 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect -topia.use.hibernate.mapping.files=true +topia.use.hibernate.mapping.files=false topia.connection.username=sa topia.connection.password=sa topia.connection.driver_class=org.h2.Driver