我在对象中有一个JSONArray
字段:
@Column(name = "_history", columnDefinition = "JSON") @Convert(converter = JSONArrayConverter.class) private JSONArray history;
这是JSONArrayConverter
的代码:
@JsonSerialize @Converter(autoApply = true) public class JSONArrayConverter implements AttributeConverter<JSONArray, String> { public static final Logger LOGGER = LoggerFactory.getLogger(JSONObjectConverter.class); @Override public String convertToDatabaseColumn(JSONArray array) { LOGGER.debug(array.toString()); if (array == null) return new JSONArray().toString(); String data = null; try { data = array.toString(); } catch (final Exception e) { LOGGER.error("JSON writing error", e); } return data; } @Override public JSONArray convertToEntityAttribute(String data) { if (_EMPTY.equals(data) || data == null || "[]".equals(data)) return new JSONArray(); JSONArray array = null; try { array = new JSONArray(data); } catch (final Exception e) { LOGGER.error("JSON reading error", e); } return array; } }
问题是当从MySQL数据库请求对象时(history是JSON列并且有数据),Spring Boot将其返回为空:
"history": {}
最后,我解决了这个问题。
首先,将上述存储库添加到
pom.xml
中。然后将代码更改为以下内容:然后一切都正常工作。