我在对象中有一个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": {}            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
最后,我解决了这个问题。
<dependency> <groupId>io.hypersistence</groupId> <artifactId>hypersistence-utils-hibernate-60</artifactId> <version>3.4.3</version> </dependency>首先,将上述存储库添加到
pom.xml中。然后将代码更改为以下内容:然后一切都正常工作。