public void checkTableStructure(TableRegistration table) {
		// TODO Update table structure
		StringBuilder query = new StringBuilder();
		query.append("SELECT * FROM ")
			 .append(table.getName())
			 .append(" LIMIT 1");
		try {
			ResultSetMetaData meta = connection.prepareStatement(query.toString()).executeQuery().getMetaData();
			Collection<FieldRegistration> fields = table.getFields();
			// <field,alreadyexisting?>
			Map<String, String> redo = new LinkedHashMap<String, String>();
			for (FieldRegistration f : fields) {
				boolean found = false;
				String deftype = H2Util.getTypeFromClass(f.getType());
				for (int i = 1; i <= meta.getColumnCount(); i++) {
					if (f.getName().equalsIgnoreCase(meta.getColumnName(i))) {
						String type = meta.getColumnTypeName(i);
						if (!deftype.equals(type)) {
							redo.put(f.getName(), true + ";" + deftype);
						}
						found = true;
						break;
					}
				}
				if (!found) {
					redo.put(f.getName(), false + ";" + deftype);
				}
			}
			for (String s : redo.keySet()) {
				StringBuilder q = new StringBuilder();
				q.append("ALTER TABLE ").append(table.getName()).append(" ");
				String[] results = redo.get(s).split(";");
				if (results[0].equalsIgnoreCase("true")) {
					q.append("ALTER COLUMN ").append(s).append(" ").append(results[1]);
				} else {
					q.append("ADD COLUMN ").append(s).append(" ").append(results[1]);
				}
				connection.prepareStatement(q.toString()).executeUpdate();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}