我有一个表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/