Problema ao atribuir uma classe filha como atributo de outra classe
10 respostasResolvido
Surt_Cthugha
Ola, sou um pouco novo nessa parte e queria uma ajuda.
Estou tentando adicionar a classe “Professor” como um atributo á classe “Aluguel”. a classe “Professor” é filha da classe “Pessoa”.
Quando eu executo não há indicação de erro, mas por algum motivo os dados do professor não aparecem no banco de dados de “Aluguel” como se não estivessem sendo salvos.
Acredito que deve ser algum erro na anotação acima da variável “nomeDoProfessor”, não conseguir encontrar nada sobre isso, se alguém puder me ajudar agradeço.
segue abaixo a classe “Aluguel”.
Mas quando executei ocorreu o seguinte erro:
java.lang.ExceptionInInitializerError
Lucas_Camara
Pode tirar isso, não precisa.
name = "idpessoa"
O idpessoa é a coluna FK da tabela Professor na tabela Aluguel ?
Surt_Cthugha
Não, eu acabei me confundido, o FK de Professor em Aluguel deveria ser a variável que o representa em Aluguel, no casso nomeDoProfessor.
Eu corrigir o código:
Voltou a passar nos testes, mas não salvar os dados de Professor.
Quando não era uma classe filha, como por exemplo atribuir Endereço a Pessoa, eu fazia o código desse mesmo jeito e não dava esse tipo de erro.
Lucas_Camara
Então, nesse caso, ai sim vc tem que usar o referencedColumnName pois a coluna usada no join não é a PK da tabela Professor. Faça assim:
Fazer join com uma coluna que não seja ID é uma péssima prática. Geralmente só é usado para contornar algum problema mais grave (gambiarra msm). Como são as tabelas Aluguel e Professor?
as tabelas de Aluguel e Professor respeitativamente.
Lucas_Camara
Ah cara, nome do professor é um número (BigInt). Confundi pois pensei que era um texto (por conta de ser um nome).
Quando vc salva o aluguel, o atributo professor está atribuído no aluguel? Talvez esteja faltando o cascade no @OneToOne, assim: @OneToOne(cascade = CascadeType.PERSIST).
Surt_Cthugha
Eu atualizei o cogido, ainda não salva, mas agora estar indicando um erro.
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.gemeos.escolacomtdd.model.Professor
Surt_Cthugha1 like
Consegui. eu achei um tópico que falava sobre o erro que mencionei a chima. o código da classe “Aluguel” atualizado.
Soh recomendo que tu mude o nome das colunas nomeDoAluno e nomeDoProfessor para algo mais indicativo, como: idAluno e idProfessor (mudar na tabela Aluguel apenas).