@Override public Feature map(int index, ResultSet resultSet, StatementContext ctx) throws SQLException { Feature feature = new Feature(); feature.setId((UUID) resultSet.getObject("id")); feature.setParentId((UUID) resultSet.getObject("parent_id")); feature.setSlug(resultSet.getString("slug")); feature.setTitle(resultSet.getString("title")); feature.setFeature(resultSet.getString("feature")); feature.setFeatureSlug(resultSet.getString("feature_slug")); if (MapperUtils.hasColumn("localization_data", resultSet) && !Strings.isNullOrEmpty(resultSet.getString("localization_data"))) { ObjectMapper mapper = new ObjectMapper(); try { Map<Locale, Map<String, Object>> localizedVersions = Maps.newHashMap(); Map[] data = mapper.readValue(resultSet.getString("localization_data"), Map[].class); for (Map map : data) { localizedVersions.put(Locale.forLanguageTag((String) map.get("locale")), (Map) map.get("entity")); } feature.setLocalizedVersions(localizedVersions); } catch (IOException e) { throw new SQLException("Failed to de-serialize localization JSON data", e); } } return feature; } }