У меня есть родительское (программное) pojo с отношениями «многие ко многим» со своими детьми (подписчик).Циклическая сериализация со многими для многих отношений с Hibernate
Проблема заключается в том, когда она сериализует программу, она также сериализует подписчиков программы, которая включает сериализацию своих программ, которая включает сериализацию своих подписчиков, до тех пор, пока она не сериализует каждую отдельную программу & Абонент в базе данных.
ERD выглядит следующим образом: Программа < -> Абонент
Это означает, что было крошечным 17Kb блок данных (JSON) возвращаются стало возвращением 6.9MB. Таким образом, в свою очередь, выдувает время для сериализации данных и затем возвращает их.
Почему мой родитель возвращается детям, возвращающимся родителям, возвращающимся? Как я могу остановить это, поэтому я получаю подписчиков только для каждой программы? Я полагаю, что я сделал что-то не так с моими аннотациями, может быть? Я хотел бы поддерживать отношения «многие ко многим», но без этого глубоко вложенного поиска данных.
(Примечание..? Я до пытался добавить столько Ленивые аннотации я могу найти только увидеть, если это помогает Это не Может быть, я делаю что тоже неправильно)
Program.java
@Entity
@Table(name="programs")
public class Program extends Core implements Serializable, Cloneable {
...
@ManyToMany()
@JoinTable(name="program_subscribers",
joinColumns={@JoinColumn(name="program_uid")},
inverseJoinColumns={@JoinColumn(name="subscriber_uid")})
public Set<Subscriber> getSubscribers() { return subscribers; }
public void setSubscribers(Set<Subscriber> subscribers) { this.subscribers = subscribers; }
Subscriber.java
@Entity
@Table(name="subscribers")
public class Subscriber extends Core implements Serializable {
...
@ManyToMany(mappedBy="subscribers")
public Set<Program> getPrograms() { return programs; }
public void setPrograms(Set<Program> programs) { this.programs = programs;
}
Реализация
public Collection<Program> list() {
return new Programs.findAll();
}
Это мой проект, я не на 100%, что используется для сериализации JSON. Я вижу ссылки на com.sdicons.json.mapper.JSONMapper.SimpleMapperHelper. И у нас есть метод public JSONValue toJSON (Object pojo) выдает MapperException {}. (предположим, что это сворачивает вашу собственную сериализацию) –
Также, если я аннотирую getPrograms() @XmlTransient, это означало бы, что я никогда не смог бы вернуть абонентские программы? –
есть. Другой - это настроить ваш картограф, чтобы позаботиться о цикле вручную. – Bozho