Двунаправленные отношения JPA выдают java.lang.StackOverflowError: nullJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Двунаправленные отношения JPA выдают java.lang.StackOverflowError: null

Сообщение Anonymous »

Я пытаюсь связать два объекта с помощью JPA, когда я запускаю проект, мне не выдаются ошибки, но когда я запрашиваю метод, который дает мне избирателей лидера сообщества, я получаю следующее исключение:

Код: Выделить всё

java.lang.StackOverflowError: null
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:1018) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:1018) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:1018) ~[gson-2.8.5.jar:na]
Это похоже на цикл, я не знаю, как это решить.

Вот мои классы:

1)Лидер:

Код: Выделить всё

@Entity
@Table(name = "leaders")
public class Leader implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;

@NotEmpty
String phone;

@NotEmpty
String name;

@OneToMany( mappedBy = "leader", fetch = FetchType.LAZY,cascade = CascadeType.ALL, orphanRemoval = true)
private List voters;

public Leader() {
voters = new ArrayList();
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getCelular() {
return phone;
}

public void setCelular(String celular) {
this.phone = celular;
}

public String getNombre() {
return name;
}

public void setNombre(String nombre) {
this.name = nombre;
}

public List getVotantes() {
return voters;
}

public void setVotantes(List  votantes) {
this.voters = votantes;
}

public void addVotante(Voter votante){
voters.add(votante);
}
}
2) Избиратель:

Код: Выделить всё

@Entity
@Table(name = "voters")
public class Voter implements Serializable {

@Id
String id;

String name;

String phone;

String email;

@Column(name = "electoral_school")
String electoralSchool;

@Temporal(TemporalType.DATE)
Date registrationDate;

@ManyToOne(fetch = FetchType.LAZY)
private Leader leader;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
Sector sector;

@PrePersist
public void prePersist() {
registrationDate = new Date();
}

public String getCedula() {
return id;
}

public void setCedula(String cedula) {
this.id = cedula;
}

public String getNombre() {
return name;
}

public void setNombre(String nombre) {
this.name = nombre;
}

public String getTelefono() {
return phone;
}

public void setTelefono(String telefono) {
this.phone = telefono;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getColegioElectoral() {
return electoralSchool;
}

public void setColegioElectoral(String colegioElectoral) {
this.electoralSchool = colegioElectoral;
}

public Leader getDirigente() {
return leader;
}

public void setDirigente(Leader dirigente) {
this.leader = dirigente;
}

public Date getRegistro() {
return registrationDate;
}

public void setRegistro(Timestamp registro) {
this.registrationDate = registro;
}
}
3)LeaderController:

Код: Выделить всё

@Controller
@RequestMapping("/leader")
public class LeaderController {

@Autowired
IDirigenteService leaderService;

@RequestMapping(value="getVoters/{leader_id}")
@ResponseBody
public String getAll(@PathVariable(value = "leader_id") Long leader_id){
Gson gson = new Gson();
return gson.toJson(leaderService.findById(leader_id).getVotantes());

}

}
Таблицы заполняю тестовыми данными в import.sql.

Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/547 ... error-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»