java - ObjectMapper无法将值列表写入字符串

标签 java json spring jsp

我有一个表commandeClient,其中包含列表ligneCommandeCLients的带有注释json忽略的列表ligneCommandesClients

    @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函数以JSon格式加载listCommandeClient,并带有一个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);


我一直无缘无故地重复此错误(删除至重复此错误的次数)

    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)


任何想法我该如何解决此错误
提前致谢

最佳答案

在相同的上下文中,类别Category包含Article列表,但是,即使我在getArticles上添加了@IgnoreJson注释,我仍然会收到如下所示的惰性初始化错误:

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.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.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.jackson.map.ser.ContainerSerializers $ AsArraySerializer.serialize(ContainerSerializers.java:111)
在org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:296)
在org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:224)
在org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:1512)
在org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:1262)
在com.stock.mvc.model.CommandeClient.getLigneCommandeJSON(CommandeClient.java:112)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:498)
在javax.el.BeanELResolver.invoke(BeanELResolver.java:165)

关于java - ObjectMapper无法将值列表写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60839093/

相关文章:

java - 以 45 度角穿过 Apache PDFBox 中心旋转水印文本

java - 向 1 个 JButton 添加更多鼠标监听器?

php - Youtube API v3-检索 channel 名称

java - 如何在不发送实体完整 json 的情况下更新对象

Spring LDAP + @Entry + 基本属性 - 不工作

java - org.apache.commons.fileupload.disk.DiskFileItem 没有正确创建?

java - Spring Boot MongoDb 集合

java - 从 for 循环中取出可迭代变量

java - 使用 hibernate-search 索引 Enum 类型字段

android - 在 Android 应用程序中使用 json 输出显示时我的 Java 文件出错