我在将一组POJO转换为JSON字符串时遇到了一些麻烦,因此我可以将其存储在数据库列中。到JSON的转换按预期工作,但是从JSON到Set LinkedHashSet<LinkedHashMap>
,这会引起问题。
奇怪的是,在我的转换器内部,JSON字符串已成功转换为Set<Qualification>
。当我在IDE中调试并逐步执行时,可以看到它在deepCopy
抽象类中调用了MutableMutabilityPlan
方法之后。此时,数据的类型为LinkedHashSet<LinkedHashMap>
,而不是转换后的Set<Qualification>
。
这是我的转换器。
public class SetToStringConverter implements AttributeConverter<Set<Qualification>, String> {
private final ObjectMapper mapper = new ObjectMapper();
private final String errorMessage = "converter.invalid";
@Override
public String convertToDatabaseColumn(final Set<Qualification> items) {
try {
return mapper.writeValueAsString(items);
} catch (JsonProcessingException e) {
throw new ConverterFailureException(errorMessage);
}
}
@Override
public Set<Qualification> convertToEntityAttribute(final String data) {
try {
if (data != null) {
final Set<Qualification> s = mapper.readValue(data, new TypeReference<Set<Qualification>>() {});
return s; // Debugging here I have the correct type
}
return new HashSet<>();
} catch (IOException e) {
throw new ConverterFailureException(errorMessage);
}
}
}
我已经做过一些研究并且尝试了各种方法,但是结果总是相同的。
任何人之前都遇到过此问题,或者可以看到我的转换器有任何问题。让我知道是否有任何不清楚的地方,以便我提供更多信息。
非常感谢您的帮助。