Estou construindo um CRUD. Ainda sou iniciante em desenvolvimento, então por enquanto só em freelas.
Bom, o que acontece é o seguinte, fiz uma página de cadastro de informações. O cadastro funciona legal, ou seja a entrada de dados com
Só que eu preciso carregar uma lista do relacionamento para cadastrar no banco. Exemplo que vou usar aqui é na tela de cadastro de paciente, preciso cadastrar por quem este paciente é tratado (médico).
Segue s classes, configs, e a página:
entidade.Medico
package entidade;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name="tblMedico")
public class Medico {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column
private Integer idMedico;
@Column(length=35)
private String nome;
@Column(length=25)
private String numCRM;
@Column(length=15)
private String telefone;
@OneToMany(mappedBy="medico")
private List<Paciente> pacientes;
@OneToMany(mappedBy="medico")
private List<Receita> receitas;
public Medico() {
super();
}
public Medico(String nome, String numCRM, String telefone,
List<Paciente> pacientes, List<Receita> receitas) {
this.nome = nome;
this.numCRM = numCRM;
this.telefone = telefone;
this.pacientes = pacientes;
this.receitas = receitas;
}
public Medico(Integer idMedico) {
this.idMedico = idMedico;
}
public List<Paciente> getPacientes() {
return pacientes;
}
public void setPacientes(List<Paciente> pacientes) {
this.pacientes = pacientes;
}
public List<Receita> getReceitas() {
return receitas;
}
public void setReceitas(List<Receita> receitas) {
this.receitas = receitas;
}
public Integer getIdMedico() {
return idMedico;
}
public void setIdMedico(Integer idMedico) {
this.idMedico = idMedico;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNumCRM() {
return numCRM;
}
public void setNumCRM(String numCRM) {
this.numCRM = numCRM;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
entidade.Paciente
package entidade;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name="tblPaciente")
public class Paciente {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column
private Integer idPaciente;
@Column (unique=true)
private Integer CPF;
@Column (length=15)
private String RG;
@Column (length=25)
private String matricula;
@Column (length=35)
private String nome;
@Column (length=15)
private String telefone;
@Column (length=20)
private String email;
@ManyToOne
@JoinColumn(name="idMedico")
private Medico medico;
@OneToMany(mappedBy="paciente")
private List<Receita> receitas;
public Paciente() {
super();
}
public Paciente(Integer idPaciente, Integer cPF, String rG,
String matricula, String nome, String telefone, String email,
Medico medico, List<Receita> receitas) {
super();
this.idPaciente = idPaciente;
CPF = cPF;
RG = rG;
this.matricula = matricula;
this.nome = nome;
this.telefone = telefone;
this.email = email;
this.medico = medico;
this.receitas = receitas;
}
public Integer getIdPaciente() {
return idPaciente;
}
public void setIdPaciente(Integer idPaciente) {
this.idPaciente = idPaciente;
}
public Integer getCPF() {
return CPF;
}
public void setCPF(Integer cPF) {
CPF = cPF;
}
public String getRG() {
return RG;
}
public void setRG(String rG) {
RG = rG;
}
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Medico getMedico() {
return medico;
}
public void setMedico(Medico medico) {
this.medico = medico;
}
public List<Receita> getReceitas() {
return receitas;
}
public void setReceitas(List<Receita> receitas) {
this.receitas = receitas;
}
}
controle.controlePaciente
package controle;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import persistencia.*;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import entidade.*;
public class controlePaciente extends ActionSupport {
private static final long serialVersionUID = -163992215564027574L;
private Paciente paciente;
private String msg;
private List<Paciente> listaPaciente;
public controlePaciente(){
paciente = new Paciente();
}
public Paciente getPaciente() {
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public List<Paciente> getListaPaciente() {
return listaPaciente;
}
public void setListaPaciente(List<Paciente> listaPaciente) {
this.listaPaciente = listaPaciente;
}
public String cadastrar(){
try{
if(paciente.getIdPaciente() != null && paciente.getIdPaciente() > 0)
{
new PacienteDao().update(paciente);
}
else
{
new PacienteDao().create(paciente);
}
paciente = new Paciente(); // -> Limpar os campos
setMsg("Gravado com sucesso!");
return SUCCESS;
}catch (Exception e) {
setMsg("Erro: " + e.getMessage());
return ERROR;
}
}
public String carregarConsulta(){
try{
listaPaciente = new PacienteDao().listarTodos(Paciente.class);
return SUCCESS;
}catch (Exception e) {
setMsg(e.getMessage());
return ERROR;
}
}
public String excluir(){
HttpServletRequest request = (HttpServletRequest)
ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
Integer id = new Integer(request.getParameter("id"));
try{
paciente = new Paciente();
paciente.setIdPaciente(id);
new PacienteDao().delete(paciente);
setMsg("Excluido com sucesso!");
carregarConsulta();
return SUCCESS;
}catch (Exception e) {
setMsg("Erro: " + e.getMessage());
carregarConsulta();
return ERROR;
}
}
public String editar(){
HttpServletRequest request = (HttpServletRequest)
ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
try{
Integer id = new Integer(request.getParameter("id"));
paciente = new PacienteDao().buscarPeloId(id, Paciente.class);
return SUCCESS;
}catch (Exception e) {
setMsg("Erro: " + e.getMessage());
return ERROR;
}
}
}
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="controle" extends="struts-default">
<action name="laboratorio.cadastrar"
class="controle.controleLaboratorio"
method="cadastrar">
<result name="success">/cadastrarLaboratorio.jsp</result>
</action>
<action name="laboratorio.listar"
class="controle.controleLaboratorio"
method="carregarConsulta">
<result name="success">/listarLaboratorio.jsp</result>
</action>
<action name="laboratorio.excluir"
class="controle.controleLaboratorio"
method="excluir">
<result name="success">/listarLaboratorio.jsp</result>
</action>
<action name="laboratorio.editar"
class="controle.controleLaboratorio"
method="editar">
<result name="success">/cadastrarLaboratorio.jsp</result>
</action>
<action name="medicamento.cadastrar"
class="controle.controleMedicamento"
method="cadastrar">
<result name="success">/cadastrarMedicamento.jsp</result>
</action>
<action name="medicamento.listar"
class="controle.controleMedicamento"
method="carregarConsulta">
<result name="success">/listarMedicamento.jsp</result>
</action>
<action name="medicamento.excluir"
class="controle.controleMedicamento"
method="excluir">
<result name="success">/listarMedicamento.jsp</result>
</action>
<action name="medicamento.editar"
class="controle.controleMedicamento"
method="editar">
<result name="success">/cadastrarMedicamento.jsp</result>
</action>
<action name="medico.cadastrar"
class="controle.controleMedico"
method="cadastrar">
<result name="success">/cadastrarMedico.jsp</result>
</action>
<action name="medico.listar"
class="controle.controleMedico"
method="carregarConsulta">
<result name="success">/listarMedico.jsp</result>
</action>
<action name="medico.excluir"
class="controle.controleMedico"
method="excluir">
<result name="success">/listarMedico.jsp</result>
</action>
<action name="medico.editar"
class="controle.controleMedico"
method="editar">
<result name="success">/cadastrarMedico.jsp</result>
</action>
<action name="paciente.cadastrar"
class="controle.controlePaciente"
method="cadastrar">
<result name="success">/cadastrarPaciente.jsp</result>
</action>
<action name="paciente.listar"
class="controle.controlePaciente"
method="carregarConsulta">
<result name="success">/listarPaciente.jsp</result>
</action>
<action name="paciente.excluir"
class="controle.controlePaciente"
method="excluir">
<result name="success">/listarPaciente.jsp</result>
</action>
<action name="paciente.editar"
class="controle.controlePaciente"
method="editar">
<result name="success">/cadastrarPaciente.jsp</result>
</action>
<action name="receita.cadastrar"
class="controle.controleReceita"
method="cadastrar">
<result name="success">/cadastrarReceita.jsp</result>
</action>
<action name="receita.listar"
class="controle.controleReceita"
method="carregarConsulta">
<result name="success">/listarReceita.jsp</result>
</action>
<action name="receita.excluir"
class="controle.controleReceita"
method="excluir">
<result name="success">/listarReceita.jsp</result>
</action>
<action name="receita.editar"
class="controle.controleReceita"
method="editar">
<result name="success">/cadastrarReceita.jsp</result>
</action>
</package>
</struts>
<%@ taglib uri="/struts-tags" prefix="s"%>
<h3>Cadastrar Paciente</h3>
<ul class="menuinterno">
<li><s:a href="cadastrarPaciente.jsp">Cadastrar</s:a></li>
<li><s:a href="listarPaciente.jsp">Pesquisar</s:a></li>
<li><s:a href="cadastrarPaciente.jsp">Alterar</s:a></li>
<li>
</ul>
<hr />
<s:form cssClass="form" action="paciente.cadastrar">
<s:hidden name="paciente.idPaciente"></s:hidden>
<s:textfield label="Nome" name="paciente.nome"></s:textfield>
<s:textfield label="CPF" name="paciente.cpf"></s:textfield>
<s:textfield label="Matrícula" name="paciente.matricula"></s:textfield>
<s:textfield label="RG" name="paciente.rg"></s:textfield>
<s:textfield label="Telefone" name="paciente.telefone"></s:textfield>
<s:textfield label="E-mail" name="paciente.email"></s:textfield>
<s:combobox list="paciente.pacientes"></s:combobox>
<s:submit value="Gravar Paciente"></s:submit>
</s:form>
<span class="validator">${msg}</span>