Answer the question
In order to leave comments, you need to log in
Java: How to properly process Json?
Good afternoon!
The question is:
Is there
//Основной класс
class Client {
private String login;
private Set<Pet> pets;
}
//Обрабатывает запрос, и возвращает JSON объект
@RequestMapping(value = "/ajax", method = RequestMethod.GET)
public @ResponseBody String ajax() throws IOException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(clientDAO.getAll()); // тут List<> (список всех клиентов, а у каждого клиента Set животных)
}
//В jsp описал обработку данных с помощью ajax
$.ajax({
url: '/ajax',
type: 'GET',
dataType: "json",
contentType: "application/json ",
success: function (data) {
alert("Данные" + data)
},
error: function () {
alert("Ошибка при получении данных!")
}
})
Answer the question
In order to leave comments, you need to log in
As I wrote in the comment, you have a cyclic dependency between Pet and Client. There are two ways out - either remove the dependency, or determine the owner of the connection so that Hibernate can correctly determine the deserialization rule. You can do this either by describing the mapping rule in xml and defining the inverse parameter:
<hibernate-mapping>
<class name="ru.misha.model.Client" table="clients" ...>
...
<set name="pets" table="clients_pets" fetch="select" inverse="true">
<key>
<column name="client_id" not-null="true" />
</key>
<one-to-many class="ru.misha.model.Pet" />
</set>
...
</class>
...
</hibernate-mapping>
@Entity
@Table(name = "clients")
public class Client extends Base {
@OneToMany(mappedBy="client")
@Column(name="clientId")
private Set<Pet> pets;
}
> Infinite recursion (StackOverflowError) (through reference chain: ru.misha.model.Pet["client"]->ru.misha.model.Client["pets"]
Как я понимаю, прога тянет клиента, внутри клиента список животных. У животного вытягивается клиент, и идем по рекурсии заново. Память переполняется и приложение падает. Попробуйте либо хранить только id клиента в животном, либо добавьте OneToMany для списка животных, а в животном уберите ссылку на клиента
Можно глянуть вот сюда, а еще на мой ответ по схожему вопросу вот тут
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question