Index: H2SpatialFetchFeatureTypeOperation.java
===================================================================
--- H2SpatialFetchFeatureTypeOperation.java	(revision 44375)
+++ H2SpatialFetchFeatureTypeOperation.java	(revision 44376)
@@ -15,6 +15,7 @@
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
 import org.gvsig.fmap.dal.feature.EditableFeatureType;
+import org.gvsig.fmap.dal.resource.exception.AccessResourceException;
 import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
 import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
 import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
@@ -79,62 +80,68 @@
         super(helper, featureType, table, primaryKeys, defaultGeometryColumn, crs);
     }            
 
-    @Override
-    public void fetch(EditableFeatureType featureType, Connection conn, TableReference table, List<String> pks, String defaultGeometryColumn, IProjection crs) throws DataException {
-        geometry_column = new HashMap<>();
-        try {
-            //
-            // https://github.com/orbisgis/h2gis/wiki/1.-Spatial-data#geometry-columns-view
-            //
-            StringBuilder where = null;
-            if( table.hasDatabase() ) {
-                if( where == null ) {
-                    where = new StringBuilder();
-                } else {
-                    where.append(" AND ");
+    private GeometryColumnInfo getGeometryColumnInfo(String name) {
+        if( geometry_column==null ) {
+            geometry_column = new HashMap<>();
+            try {
+                //
+                // https://github.com/orbisgis/h2gis/wiki/1.-Spatial-data#geometry-columns-view
+                //
+                StringBuilder where = null;
+                if( table.hasDatabase() ) {
+                    if( where == null ) {
+                        where = new StringBuilder();
+                    } else {
+                        where.append(" AND ");
+                    }
+                    where.append("UPPER(F_TABLE_CATALOG) = '");
+                    where.append(table.getDatabase().toUpperCase());
+                    where.append("'");
                 }
-                where.append("UPPER(F_TABLE_CATALOG) = '");
-                where.append(table.getDatabase().toUpperCase());
-                where.append("'");
-            }
-            if( table.hasSchema()) {
-                if( where == null ) {
-                    where = new StringBuilder();
-                } else {
-                    where.append(" AND ");
+                if( table.hasSchema()) {
+                    if( where == null ) {
+                        where = new StringBuilder();
+                    } else {
+                        where.append(" AND ");
+                    }
+                    where.append("UPPER(F_TABLE_SCHEMA) = '");
+                    where.append(table.getSchema().toUpperCase());
+                    where.append("'");
                 }
-                where.append("UPPER(F_TABLE_SCHEMA) = '");
-                where.append(table.getSchema().toUpperCase());
-                where.append("'");
-            }
-            if( table.hasTable()) {
-                if( where == null ) {
-                    where = new StringBuilder();
-                } else {
-                    where.append(" AND ");
+                if( table.hasTable()) {
+                    if( where == null ) {
+                        where = new StringBuilder();
+                    } else {
+                        where.append(" AND ");
+                    }
+                    where.append("UPPER(F_TABLE_NAME) = '");
+                    where.append(table.getTable().toUpperCase());
+                    where.append("'");
+                }            
+                String sql = "SELECT F_GEOMETRY_COLUMN, GEOMETRY_TYPE, COORD_DIMENSION, SRID, TYPE FROM GEOMETRY_COLUMNS WHERE " + where;
+                Statement st = this.getConnection().createStatement();
+                ResultSet rs = JDBCUtils.executeQuery(st,sql);
+                while( rs.next() ) {
+                    geometry_column.put(
+                        rs.getString("F_GEOMETRY_COLUMN"), 
+                        new GeometryColumnInfo(
+                            rs.getString("F_GEOMETRY_COLUMN"), 
+                            rs.getInt("GEOMETRY_TYPE"), 
+                            rs.getString("TYPE"), 
+                            rs.getInt("COORD_DIMENSION"), 
+                            rs.getInt("SRID")
+                        )
+                    );
                 }
-                where.append("UPPER(F_TABLE_NAME) = '");
-                where.append(table.getTable().toUpperCase());
-                where.append("'");
-            }            
-            String sql = "SELECT F_GEOMETRY_COLUMN, GEOMETRY_TYPE, COORD_DIMENSION, SRID, TYPE FROM GEOMETRY_COLUMNS WHERE " + where;
-            Statement st = this.getConnection().createStatement();
-            ResultSet rs = JDBCUtils.executeQuery(st,sql);
-            while( rs.next() ) {
-                geometry_column.put(
-                    rs.getString("F_GEOMETRY_COLUMN"), 
-                    new GeometryColumnInfo(
-                        rs.getString("F_GEOMETRY_COLUMN"), 
-                        rs.getInt("GEOMETRY_TYPE"), 
-                        rs.getString("TYPE"), 
-                        rs.getInt("COORD_DIMENSION"), 
-                        rs.getInt("SRID")
-                    )
-                );
+            } catch (SQLException | AccessResourceException ex) {
+                LOGGER.warn("Can't read metadata from table '"+table+"'.",ex);
             }
-        } catch (SQLException ex) {
-            LOGGER.warn("Can't read metadata from table '"+table+"'.",ex);
         }
+        return this.geometry_column.get(name);
+    }
+    
+    @Override
+    public void fetch(EditableFeatureType featureType, Connection conn, TableReference table, List<String> pks, String defaultGeometryColumn, IProjection crs) throws DataException {
         super.fetch(featureType, conn, table, pks, defaultGeometryColumn, crs);
     }
         
@@ -146,7 +153,7 @@
         ) {
         try {
             if( attr.getType()==DataTypes.GEOMETRY ) {
-                GeometryColumnInfo column_info = this.geometry_column.get(attr.getName());
+                GeometryColumnInfo column_info = this.getGeometryColumnInfo(attr.getName());
                 String type = "GEOMETRY";
                 if( column_info!=null ) {
                     // H2GIS solo soporte 2D y 3D no soporta Ms
