Olá. Estou com uma dificuldade com a persistência de dados com relacionamentos entre entidades. Criei duas entidades chamadas PACIENTES e outra CONSULTAS, que se relacionam entre si. Criei o CRUD de PACIENTES e estã funcionando perfeitamente. Referente ao relacionamento, um PACIENTE pode ter várias consultas. E várias CONSULTAs podem ter um PACIENTE. Quando vou fazer um cadastro de uma CONSULTA, seleciono o CLIENTE (conforme o print), e ao dar o submit grava perfeitamente os dados na tabela CONSULTA com os dados da consulta, e o ID do PACIENTE. (Não sei se fiz da melhor forma, podem me corrigir).
Mas o problema está quando faço um SELECT com um JOIN.
Exibe o erro do print abaixo.
CLASSE PACIENTE
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="PACIENTES")
public class Paciente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String nome;
@OneToMany
@JoinColumn(name="consulta_id")
private List<Consulta> consultas;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<Consulta> getConsultas() {
return consultas;
}
public void setConsultas(List<Consulta> consultas) {
this.consultas = consultas;
}
@Override
public String toString() {
return "Paciente [id=" + id + ", nome=" + nome + ", consultas=" + consultas + "]";
}
}
CLASSE CONSULTA
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name= "CONSULTAS")
public class Consulta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String motivo;
@ManyToOne
private Paciente paciente;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMotivo() {
return motivo;
}
public void setMotivo(String motivo) {
this.motivo = motivo;
}
public Paciente getPaciente() {
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
@Override
public String toString() {
return "Consulta [id=" + id + ", motivo=" + motivo + ", paciente=" + paciente + "]";
}
}
FORMULÁRIO de CADASTRO
<form action="/erp/consultas/grava" autocomplete="off">
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane fade active show" id="dados">
<div class="row">
<div class="col-xl-12">
<div class="form-group">
<label for="exampleInputPassword1">Paciente</label>
<select class="form-control" name="paciente.id">
<option value="1">Eu</option>
<option value="2">Eu Mesmo</option>
<option value="3">Irene</option>
</select>
</div>
</div>
<div class="col-xl-12">
<div class="form-group">
<label for="exampleInputPassword1">Motivo da Consulta</label>
<textarea class="form-control" rows="10" name="motivo"></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer text-right">
<button type="reset" class="btn btn-warning btn-sm">Limpar</button>
<button type="submit" class="btn btn-success btn-sm m-l-5">Cadastrar</button>
</div>
</form>