Le champ JSONArray du modèle renvoyé par Spring Boot est vide
P粉076987386
P粉076987386 2023-09-12 15:56:44
0
1
514

J'ai un champJSONArraydans l'objet :

@Column(name = "_history", columnDefinition = "JSON") @Convert(converter = JSONArrayConverter.class) private JSONArray history;

Voici le code pourJSONArrayConverter:

@JsonSerialize @Converter(autoApply = true) public class JSONArrayConverter implements AttributeConverter { 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; } }

Le problème est que lors de la demande de l'objet à la base de données MySQL (l'historique est une colonne JSON et contient des données), Spring Boot le renvoie vide :

"history": {}
P粉076987386
P粉076987386

répondre à tous (1)
P粉496886646

Enfin, j'ai résolu le problème.

 io.hypersistence hypersistence-utils-hibernate-60 3.4.3 

Tout d’abord, ajoutez le référentiel ci-dessus àpom.xml. Changez ensuite le code comme suit :

@Column(name = "_history", columnDefinition = "json") @Type(JsonType.class) private List> history = new ArrayList<>();

Ensuite, tout fonctionne bien.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!