Ошибка - JSON попадает в бесконечный цикл

Я пытаюсь отобразить данные JSON, для этого я использую fastxml jackson. Я могу отображать JSON, но JSON переходит в бесконечный цикл, и в файле журнала я получаю сообщение об ошибке

ОШИБКА [org.apache.catalina.core.ContainerBase.[jboss.web].[host-host].[/EAD].[spring]] (http--127.0.0.1-8080-1) Servlet.service() для сервлета Spring выдал исключение: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonMappingException$Reference from [Module "deployment.EAD.war:main" из загрузчика служебных модулей]

Вот мой метод контроллера.

@RequestMapping("/viewDashboard")
@ResponseBody
public ModelMap test(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestParam String name) {

    ModelMap modelMap = new ModelMap();
    List<Instances> instances = viewDashboardServiceImpl.viewDashboard();
    return modelMap.addAllAttributes(instances);

}

На самом деле мой Instance.java имеет отношение к Application.java и Environment.java.

Ниже приведены мои model.java

Вот мой экземпляр .java

@Id
@GeneratedValue
@Column(name = "instanceId")
private long id;

@Column(name = "name")
private String instanceName;

@ManyToOne
@JoinColumn(name = "appId")
private Applications applications;

@ManyToOne
@JoinColumn(name = "enviId")
private Environments environments;

@Column(name = "version")
private String version;

Вот мой Application.java

    @Id
@GeneratedValue
@Column(name = "appId")
private long id;

@Column(name = "name")
private String name;

@Column(name = "ownerName")
private String ownerName;

@Column(name = "version")
private String version;

@OneToMany(mappedBy = "applications", targetEntity = Instances.class)
private Set<Instances> instances;

Вот моя среда.java

@Id
@GeneratedValue
@Column(name = "enviId")
private long id;

@Column(name = "name")
private String name;

@Column(name = "ownerName")
private String ownerName;

@Column(name = "version")
private String version;

@OneToMany(mappedBy = "environments", targetEntity = Instances.class)
private Set<Instances> instances;

Вот мой JSON

{"instances":{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":

Как и выше, JSON продолжает работать с повторяющимися данными. У меня также есть следующая зависимость в maven.

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.5</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.5</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.4.5</version>
    </dependency>

И я также добавил следующий фрагмент в servlet.xml.

    <bean id="contentNegotiationManager"
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
    <property name="favorParameter" value="true" />
    <property name="mediaTypes">
        <value>
            json=application/json
            xml=application/xml
        </value>
    </property>
</bean>

person Karthi Krazz    schedule 14.04.2016    source источник
comment
У вас циклическая зависимость. Вам придется аннотировать некоторые из ваших коллекций с помощью @JsonIgnore   -  person dambros    schedule 14.04.2016
comment
Как упоминалось выше, у вас есть циклические зависимости, и данные доступны на каждом уровне, что приводит к бесконечности.   -  person M.S.    schedule 14.04.2016
comment
Спасибо всем, да, есть циклическая зависимость, и @JsonIgnore разрешает ее.   -  person Karthi Krazz    schedule 14.04.2016
comment
@dambros после добавления аннотации (@JsonIgnore) для переменных частных экземпляров Set‹Instances› как в приложении, так и в evironment.java, зацикливание было решено, и возникла новая проблема. В json я получаю только запись. На самом деле у меня есть 3 записи в таблице, все три идут в списке, но при преобразовании в JSON я получаю только последнюю запись.   -  person Karthi Krazz    schedule 14.04.2016
comment
{экземпляры: {id:3,instanceName:JAVA,приложения:{id:1,имя:SAP,ownerName:Mou,версия:3.2.1abc},среды:{id:1,имя:DEV1,ownerName:Mou,версия :1.23.asd},версия:2.3as}}   -  person Karthi Krazz    schedule 14.04.2016
comment
Но в таблице у меня есть три записи   -  person Karthi Krazz    schedule 14.04.2016
comment
JsonIgnore не должен иметь к этому никакого отношения. Вы уверены, что в списке, который вы сериализуете, есть 3 объекта внутри?   -  person dambros    schedule 14.04.2016
comment
да, я проверяю список, прежде чем вернуться в контроллер. ModelMap modelMap = новая ModelMap(); Список‹Экземпляров› instances = viewDashboardServiceImpl.viewDashboard(); log.info(экземпляры.размер()); вернуть modelMap.addAllAttributes (экземпляры); В журнале он показывает размер как 3, но в JSON я получаю только одну запись, которая слишком последняя.   -  person Karthi Krazz    schedule 14.04.2016
comment
взгляните: wiki.fasterxml.com/JacksonFeatureObjectIdentity   -  person Meiko Rachimow    schedule 14.04.2016
comment
Даже после удаления аннотации @JsonIgnore она берет последнюю запись и продолжает зацикливаться. Таким образом, сопоставление JSON происходит только для последней записи.   -  person Karthi Krazz    schedule 14.04.2016