带SpringRoo的json无限递归
我正在使用SpringRoo1.2.1和Jackson 1.9.7。 在使用json序列化我的类时,我得到一个JsonMappingException 我阅读了以下帖子,但没有找到适合我的解决方案: 我不知道为什么JsonIgnore没有在属性queueout的类队列中工作。我还尝试了JsonManagedReference,但出现了相同的错误。使用Jackson 2.0.0不是解决方案,因为Spring 3.1不支持它 有什么建议吗 这里是我的stacktrace的一部分:带SpringRoo的json无限递归,json,spring-roo,Json,Spring Roo,我正在使用SpringRoo1.2.1和Jackson 1.9.7。 在使用json序列化我的类时,我得到一个JsonMappingException 我阅读了以下帖子,但没有找到适合我的解决方案: 我不知道为什么JsonIgnore没有在属性queueout的类队列中工作。我还尝试了JsonManagedReference,但出现了相同的错误。使用Jackson 2.0.0不是解决方案,因为Spring 3.1不支持它 有什么建议吗 这里是我的stacktrace的一部分: Caused by
Caused by: org.springframework.amqp.support.converter.MessageConversionException: Failed to convert Message content
at org.springframework.amqp.support.converter.JsonMessageConverter.createMessage(JsonMessageConverter.java:181)
at org.springframework.amqp.support.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:51)
at org.springframework.amqp.rabbit.core.RabbitTemplate.convertMessageIfNecessary(RabbitTemplate.java:482)
at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:358)
at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:346)
at de.company.prs.admin.server.amqp.AdminQueueConsumer.onMessage(AdminQueueConsumer.java:52)
at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:328)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:505)
... 10 more
Caused by: org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]->de.company.prs.admin.server.domain.QueueOut["queue"]->de.company.prs.admin.server.domain.Queue["queueOuts"]->org.hibernate.collection.PersistentSet[0]
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:164)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
以下是我的课程:
首先
@爪哇豆
@生根
公共类排队{
私有字符串名称;
私有字符串描述;
@杰索尼奥雷
@许多酮
专用GenericQueue GenericQueue;
@manytone fetch=FetchType.EAGER
专用队列;
}
第二
@爪哇豆
@生根
@RooJPA活动记录
公共类队列{
私有字符串名称;
私有字符串描述;
@杰索尼奥雷
@OneToManycascade=CascadeType.ALL,mappedBy=queue,fetch=FetchType.EAGER
private Set QueueOuts=新哈希集;
}
您必须在getter上使用@JsonIgnore您必须在getter上使用@JsonIgnore在getter od上使用@JsonIgnore完全忽略使用@JsonIgnorePropertiesvalue={propertyName}的属性在getter od上使用@JsonIgnore完全忽略使用@JsonIgnorePropertiesvalue={propertyName}的属性不要使用JsonIgnore,从1.9开始,在有问题属性的getter上使用JsonManagedReference和JsonBackReference。您可以在以下位置看到两个很好的示例:
不要使用JsonIgnore,从1.9开始,在有问题属性的getter上使用JsonManagedReference和JsonBackReference。您可以在以下位置看到两个很好的示例: