Index: topia/src/java/org/codelutin/topia/persistence/PersistenceStorageJDBCMultiTable.java diff -u topia/src/java/org/codelutin/topia/persistence/PersistenceStorageJDBCMultiTable.java:1.7 topia/src/java/org/codelutin/topia/persistence/PersistenceStorageJDBCMultiTable.java:1.8 --- topia/src/java/org/codelutin/topia/persistence/PersistenceStorageJDBCMultiTable.java:1.7 Tue Nov 8 17:15:40 2005 +++ topia/src/java/org/codelutin/topia/persistence/PersistenceStorageJDBCMultiTable.java Wed Nov 30 18:37:52 2005 @@ -23,9 +23,9 @@ * Created: 20 juillet 2005 15:25:06 CEST * * @author Benjamin POUSSIN - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ * - * Last update: $Date: 2005/11/08 17:15:40 $ + * Last update: $Date: 2005/11/30 18:37:52 $ * by : $Author: thimel $ */ @@ -656,9 +656,12 @@ String [] fieldnames = ClassInfoHelper.fields(clazz); Class [] fieldTypes = ClassInfoHelper.fieldTypes(clazz); for(int i=0; i 60){ result = result.substring(result.length() - 60); } - //Elimine le point ou le _ en début de nom de table. Ne peut être - //vide car le nom ne peut se terminer par un point ou un _ - while (result.startsWith(".") || result.startsWith("_")) { + //Elimine tout caractere particulier en début de nom de table. Ne + //peut être vide car le nom ne peut se terminer par un caractere + //particulier + while (!result.matches("^[0-9a-zA-Z].*$")) { result = result.substring(1); } @@ -745,7 +749,6 @@ String fieldsDeclaration = getSQLFieldDeclaration(clazz); String newTableSql = MessageFormat.format(SQL.getProperty(SQL_CREATE_TABLE_DATA), result, fieldsDeclaration); log.info("Create data sql: " + newTableSql); - System.out.println("Create data sql: " + newTableSql); PreparedStatement newTable = conn.prepareStatement(newTableSql); newTable.execute(); newTable.close(); @@ -953,7 +956,9 @@ String tablename = getTableName(clazz); String fieldnames = ""; for(String fieldname: ClassInfoHelper.fields(clazz)){ - fieldnames += ", " + objectToDatabaseFieldName(fieldname); + if (Util.isPersistableField(clazz, fieldname)) { + fieldnames += ", " + objectToDatabaseFieldName(fieldname); + } } String sql = MessageFormat.format(SQL.getProperty(SQL_COPY_DATA), tablename, fieldnames, ""+context.getTransaction().getId()); PreparedStatement sta = conn.prepareStatement(sql); @@ -1134,7 +1139,13 @@ Collection fieldnames = null; if(forceLoadAllField) { - fieldnames = Arrays.asList(ClassInfoHelper.fields(clazz)); + String[] fieldnamesArray = ClassInfoHelper.fields(clazz); + fieldnames = new ArrayList(); + for (String fieldName : fieldnamesArray) { + if (Util.isPersistableField(clazz, fieldName)) { + fieldnames.add(fieldName); + } + } } else { fieldnames = tpo.getAskedFields(); } @@ -1171,11 +1182,16 @@ Collection fieldnames = null; if(forceInsert) { - fieldnames = Arrays.asList(ClassInfoHelper.fields(clazz)); + String[] fieldnamesArray = ClassInfoHelper.fields(clazz); + fieldnames = new ArrayList(); + for (String fieldName : fieldnamesArray) { + if (Util.isPersistableField(clazz, fieldName)) { + fieldnames.add(fieldName); + } + } } else { fieldnames = tpo.getModifiedFields(); } - String sql = null; if(forceInsert){ // rechercher les champs a inserer depuis le tpo pour construire