private static void writeConfigForTable(BufferedWriter writer, Class<?> clazz)
     throws SQLException, IOException {
   String tableName = DatabaseTableConfig.extractTableName(clazz);
   List<DatabaseFieldConfig> fieldConfigs = new ArrayList<DatabaseFieldConfig>();
   // walk up the classes finding the fields
   try {
     for (Class<?> working = clazz; working != null; working = working.getSuperclass()) {
       for (Field field : working.getDeclaredFields()) {
         DatabaseFieldConfig fieldConfig =
             DatabaseFieldConfig.fromField(databaseType, tableName, field);
         if (fieldConfig != null) {
           fieldConfigs.add(fieldConfig);
         }
       }
     }
   } catch (Error e) {
     System.err.println(
         "Skipping "
             + clazz
             + " because we got an error finding its definition: "
             + e.getMessage());
     return;
   }
   if (fieldConfigs.isEmpty()) {
     System.out.println("Skipping " + clazz + " because no annotated fields found");
     return;
   }
   @SuppressWarnings({"rawtypes", "unchecked"})
   DatabaseTableConfig<?> tableConfig = new DatabaseTableConfig(clazz, tableName, fieldConfigs);
   DatabaseTableConfigLoader.write(writer, tableConfig);
   writer.append("#################################");
   writer.newLine();
   System.out.println("Wrote config for " + clazz);
 }