ObjectMapper не может записать список значений в виде строки - PullRequest
0 голосов
/ 24 марта 2020

У меня есть таблица commandeClient, содержащая список ligneCommandesClients с аннотацией json игнорировать для списка ligneCommandeCLients

    @Entity
public class CommandeClient implements Serializable {

    @Id
    @GeneratedValue
    private Long idCdeClient;

    private String codeCommande;
    @Temporal(TemporalType.TIME)
    private Date date;

    @OneToMany(mappedBy="commandeClient")
    private List<LigneCommandeClient>ligneCommandeClients;


    @JsonIgnore
    public List<LigneCommandeClient> getLigneCommandeClients() {
        return ligneCommandeClients;
    }

}

вот сущность LigneCommandeClient

@Entity
public class LigneCommandeClient implements Serializable {

    @Id
    @GeneratedValue
    private Long idLigneCommandeClient;

    private BigDecimal qty;

    private BigDecimal prixUnitaire;

    @ManyToOne
    @JoinColumn(name="idArticle")
    private Article article;

    @ManyToOne
    @JoinColumn(name="idCdeClient")
    private CommandeClient commandeClient;

в моем jsp Я добавил функцию jquery для загрузки listCommandeClient в формате JSon с событием onclick, вызывающим следующий метод

@Transient
    public String getLigneCommandeJSON() {

        if(!ligneCommandeClients.isEmpty()){

                ObjectMapper mapper = new ObjectMapper();
                try {
                    return mapper.writeValueAsString(ligneCommandeClients);
                } catch (JsonGenerationException e) {
                    e.printStackTrace();
                } catch (JsonMappingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

        }
        return "";
    }

, однако при выполнении следующей инструкции для преобразования списка в json объект

return mapper.writeValueAsString(ligneCommandeClients);

Я повторяю эту ошибку без причины root (удалено из-за количества повторений этой ошибки)

    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:360)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:312)
    at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:111)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:146)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:118)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:146)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:118)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:360)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:312)
    at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:111)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:146)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:118)
    at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:268)
    at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:146)
    at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:118)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:360)
    at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:312)

Любая идея, как я могу решить эту ошибку благодаря авансовый

1 Ответ

0 голосов
/ 25 марта 2020

В том же контексте класс Category содержит список Article, однако, даже если я добавлю аннотацию @ Ignore Json в getArticles, я получаю ленивую ошибку инициализации следующим образом:

org. codehaus.jackson.map.JsonMappingException: не удалось лениво инициализировать коллекцию ролей: com.stock. mvc .model.Category.articles в org.codehaus.jackson.map.JsonMappingException.wrapWithPath (JsonMappingException. java: 214 ) в org.codehaus.jackson.map.JsonMappingException.wrapWithPath (JsonMappingException. java: 179) в org.codehaus.jackson.map.ser.SerializerBase.wrapAndThrow (SerializerBase. java: 97) в org.codehaus. jackson.map.ser.BeanSerializer.serializeFields (BeanSerializer. java: 150) в org.codehaus.jackson.map.ser.BeanSerializer.serialize (BeanSerializer. java: 118) в org.codehaus.jackson.map. ser.BeanPropertyWriter.serializeAsField (BeanPropertyWriter. java: 268) в org.codehaus.jackson.map.ser.BeanSerializer.serializeFields (BeanSerializer. java: 146) в org.co dehaus.jackson.map.ser.BeanSerializer.serialize (BeanSerializer. java: 118) в org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField (BeanPropertyWriter. java: 268) в org.codehaus.jackson. map.ser.BeanSerializer.serializeFields (BeanSerializer. java: 146) в org.codehaus.jackson.map.ser.BeanSerializer.serialize (BeanSerializer. java: 118) в org.codehaus.jackson.map.ser. ContainerSerializers $ IndexedListSerializer.serializeContents (ContainerSerializers. java: 236) в org.codehaus.jackson.map.ser.ContainerSerializers $ IndexedListSerializer.serializeContents (ContainerSerializers. java: 189) в org.codehaus.jack. ContainerSerializer $ AsArraySerializer.serialize (ContainerSerializers. java: 111) в org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue (StdSerializerProvider. java: 296) в org.codehaus.jacksontdSizerrovPS.Ser.Ser.Serizer. serializeValue (StdSerializerProvider. java: 224) в org.codehaus.jackson.map.ObjectMapper._configAndWriteValue (ObjectMapper. * 102 2 *: 1512) в org.codehaus.jackson.map.ObjectMapper.writeValueAsString (ObjectMapper. java: 1262) в com.stock. mvc .model.CommandeClient.getLigneCommande JSON (CommandeClient. java: 112) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflect.Delegating * MethodAccessorImpor (0). 1029 * .lang.reflect.Method.invoke (Метод. java: 498) на javax.el.BeanELResolver.invoke (BeanELResolver. java: 165)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...