Index: topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.5 topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.6 --- topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.5 Fri Jan 13 15:25:06 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java Fri Jan 13 18:37:50 2006 @@ -23,10 +23,10 @@ * Created: 31 déc. 2005 13:10:34 * * @author poussin - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ * - * Last update: $Date: 2006/01/13 15:25:06 $ - * by : $Author: bpoussin $ + * Last update: $Date: 2006/01/13 18:37:50 $ + * by : $Author: thimel $ */ package org.codelutin.topia.persistence; @@ -84,8 +84,7 @@ * @throws TopiaException Si une erreur survient durant la recherche */ protected Serializable getId(Entity e) throws TopiaException { - ClassMetadata meta = getContext().getHibernateFactory() - .getClassMetadata(entityClass); + ClassMetadata meta = getClassMetadata(); String idPropName = meta.getIdentifierPropertyName(); Serializable result; @@ -112,8 +111,7 @@ */ protected Serializable getId(Map map) throws TopiaException { try { - ClassMetadata meta = getContext().getHibernateFactory() - .getClassMetadata(entityClass); + ClassMetadata meta = getClassMetadata(); String idPropName = meta.getIdentifierPropertyName(); Serializable id = (Serializable)map.get(idPropName); @@ -276,8 +274,7 @@ try { // we used hibernate meta information for all persistence type // it's more easy than create different for all persistence - ClassMetadata meta = getContext().getHibernateFactory() - .getClassMetadata(entityClass); + ClassMetadata meta = getClassMetadata(); if (meta.hasNaturalIdentifier()) { Entity result = findByProperties(keys); return result; @@ -290,6 +287,16 @@ } + private ClassMetadata getClassMetadata() throws TopiaException { + ClassMetadata meta = getContext().getHibernateFactory() + .getClassMetadata(entityClass); + if (meta == null) { + meta = getContext().getHibernateFactory() + .getClassMetadata(entityClass.getName() + "Impl"); + } + return meta; + } + /* (non-Javadoc) * @see org.codelutin.topia.TopiaDAO#findByPrimaryKey(java.lang.Object) */ @@ -298,8 +305,7 @@ // mettre un premier couple (propName, value) en argument ca evitera // de pouvoir appeler cette methode sans argument try { - ClassMetadata meta = getContext().getHibernateFactory() - .getClassMetadata(entityClass); + ClassMetadata meta = getClassMetadata(); if (meta.hasNaturalIdentifier()) { int[] ikeys = meta.getNaturalIdentifierProperties(); String[] pnames = meta.getPropertyNames();