Ola, no desenvolvimento da minha aplicação de treinamento, onde preciso buscar um orcamento, pra popular a view com seus atributos, me deparei com o erro impresso logo abaixo:
Consegui isolar o codigo e o simulei numa classeTest:
1) Classe Test
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/springbeans.xml")
@TransactionConfiguration
public class TestSearch {
@Autowired
OrcamentoGeralController ogc;
@Test
public void test() {
OrcamentoGeral og = ogc.buscarPorId("3");
List<OrcamentoGeral> listOG = og.getCliente().getListOrcamentoGeral();
for (OrcamentoGeral o : listOG) {
System.out.println(o.getId());
}
}
2) Resultado da execução:
1
2
3
3) Ao terminar a impressao do resultado, ele exibe essa pilha de erro:
...
...
...
at com.cursoAlura.entities.Escritorio.hashCode(Escritorio.java:19)
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
at com.cursoAlura5.entities.Escritorio.hashCode(Escritorio.java:19)
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
2017-04-29 10:37:28,801 ERROR org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroy method on bean with name 'perfilController' threw an exception
java.lang.StackOverflowError
at com.cursoAlura.entities.Escritorio.hashCode(Escritorio.java:19)
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
at com.cursoAlura.entities.Escritorio.hashCode(Escritorio.java:19)
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
at com.cursoAlura.entities.Escritorio.hashCode(Escritorio.java:19)
....
....
....
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
at com.cursoAlura.entities.Escritorio.hashCode(Escritorio.java:19)
at com.cursoAlura.entities.Perfil.hashCode(Perfil.java:17)
2017-04-29 10:37:28,806 INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean - Closing JPA EntityManagerFactory for persistence unit 'fabricaConexao'
2017-04-29 10:37:28,806 INFO org.hibernate.impl.SessionFactoryImpl - closing
4) Classe Cliente:
@Entity @ManagedBean @Data
public class Cliente implements Serializable {
@OneToMany
private List<OrcamentoGeral> listOrcamentoGeral ;
5) Classe OrcamentoGeral:
@Entity @ManagedBean @Data
public class OrcamentoGeral implements Serializable {
@ManyToOne(cascade = CascadeType.ALL)
private Cliente cliente;
Alguem pode me dar uma ideia fazendo o favor do que estar acontecendo?