public static <E> void _saveArray(String tableName, long id, Collection<E> aValue) throws SQLException {
		List<E> ori = new ArrayList<E>();
		_findArray(tableName, id, ori);
		List<E> toRemove = new ArrayList<E>(ori);
		List<E> toAdd = new ArrayList<E>(aValue);
		toRemove.removeAll(aValue);
		toAdd.removeAll(ori);
		
		// handle toRemove
		if(toRemove.size()>0) {
			StringBuilder statement = new StringBuilder("delete from `");
			statement.append(tableName).append("` where `key` = ")
			.append(String.valueOf(id)).append(" and `value` in ( ");
			
			String[] toJoin = new String[toRemove.size()];
			for(int i=0;i<toRemove.size();i++) {
				toJoin[i] = escapeString(toRemove.get(i).toString());
			}
			statement.append(StringUtils.join(toJoin, ", ")).append(" )");
			PreparedStatement query = connect.prepareStatement(statement.toString());
			query.executeUpdate();
		}
		
		
		// handle toAdd
		if(toAdd.size()>0) {
			for(int i=0;i<toAdd.size();i++) {
				PreparedStatement query = connect.prepareStatement("insert into `" + tableName + "` values (?, ?)");
				query.setLong(1, id);
				query.setString(2, toAdd.get(i).toString());
				try{
					query.executeUpdate();
				} catch(SQLException e) {
					e.printStackTrace();
				}
				
			}
		}
		
		
	}