Boa noite a todos.
Estou com um problema, tenho cadastro de procedimentos onde gravo o tipo que vem de um tablela tipoProcedimento, nohora de salvar ele da o seguinte
java.lang.RuntimeException: java.sql.SQLException: ORA-02291: restrição de integridade (SINTHOS.FK_PROCEDIMENTO) violada - chave mãe não localizada
Query: INSERT INTO SINTHOS.PROCEDIMENTO(CODIGOPROCEDIMENTO,DESCRICAO,VALOR,CODIGOTIPOPROCEDIMENTO)
VALUES
(4,‘procedimento 4’,4.4,0) Parameters: []
tenho a classe bean de procedimento
[code]package sinthos.bean;
import java.util.List;
import sinthos.dao.TipoProcedimentoDAO;
public class Procedimento {
private int codigoProcedimento;
private String descricao;
private double valor;
private List listaProcedimento;
//Chave estrangeira TipoProcedimento
private TipoProcedimento tipoProcedimento;
private int codigoTipoProcedimento;
public Procedimento(){}
public int getCodigoProcedimento() {
return codigoProcedimento;
}
public void setCodigoProcedimento(int codigoProcedimento) {
this.codigoProcedimento = codigoProcedimento;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public List<Procedimento> getListaProcedimento() {
return listaProcedimento;
}
public void setListaProcedimento(List<Procedimento> listaProcedimento) {
this.listaProcedimento = listaProcedimento;
}
public TipoProcedimento getTipoProcedimento(){
return tipoProcedimento;
}
public void setTipoProcedimento(TipoProcedimento tipoProcedimento){
this.tipoProcedimento = tipoProcedimento;
}
public int getCodigoTipoProcedimento() {
return codigoTipoProcedimento;
}
public void setCodigoTipoProcedimento(int codigoTipoProcedimento) {
this.codigoTipoProcedimento = codigoTipoProcedimento;
TipoProcedimentoDAO daoTipoProcedimento = new TipoProcedimentoDAO();
this.setTipoProcedimento(daoTipoProcedimento.getTipoProcedimentoPorCodigo(codigoTipoProcedimento));
}
}
[/code]
A classe DAO
[code]package sinthos.dao;
import java.util.List;
import org.boxsql.BoxSQL;
import sinthos.bean.Procedimento;
public class ProcedimentoDAO {
public ProcedimentoDAO(){}
//Método responsável por salvar
public Procedimento salvarProcedimento(Procedimento procedimento){
Procedimento procedimentoSalvo = null;
BoxSQL box = new BoxSQL();
box.setParameter("CODIGOPROCEDIMENTO", procedimento.getCodigoProcedimento());
try{
procedimentoSalvo = (Procedimento) box.getObject("procedimentoPorCodigo.sql", Procedimento.class);
if(procedimentoSalvo == null){
box.executeUpdate("cadastrarProcedimento.sql", procedimento);
}else{
box.executeUpdate("alterarProcedimento.sql", procedimento);
}
procedimentoSalvo = (Procedimento) box.getObject("procedimentoGetPorCodigo.sql", Procedimento.class);
}finally{
box.release();
}
return procedimentoSalvo;
}
//Método responsável por excluir
public void excluirProcedimento(int codigoProcedimento){
BoxSQL box = new BoxSQL();
box.setParameter("CODIGOPROCEDIMENTO", codigoProcedimento);
try{
box.executeUpdate("excluirProcedimento.sql");
}finally{
box.release();
}
}
//Método responsável por procurar pelo código
public Procedimento getProcedimentoPorCodigo(int codigoProcedimento){
Procedimento procedimento = null;
BoxSQL box = new BoxSQL();
box.setParameter("CODIGOPROCEDIMENTO", codigoProcedimento);
try{
procedimento = (Procedimento) box.getObject("procedimentoPorCodigo.sql", Procedimento.class);
}finally{
box.release();
}
return procedimento;
}
//Método responsável por procurar pela descrição
public Procedimento getProcedimentoPorDescricao(String descricao){
Procedimento procedimento = null;
BoxSQL box = new BoxSQL();
box.setParameter("DESCRICAO", descricao);
try{
procedimento = (Procedimento) box.getObject("procedimentoPorDescricao.sql", Procedimento.class);
}finally{
box.release();
}
return procedimento;
}
//Método responsável por retornar o proximo código da tabela
public int getProximoCodigoProcedimento(){
int proximoCodigoProcedimento = 0;
Procedimento procedimento = new Procedimento();
BoxSQL box = new BoxSQL();
try{
procedimento = (Procedimento) box.getObject("procedimentoMaxCodigo.sql", Procedimento.class);
proximoCodigoProcedimento = procedimento.getCodigoProcedimento()+1;
}finally{
box.release();
}
return proximoCodigoProcedimento;
}
//Método responsável por criar uma lista
public List<Procedimento> getTodosProcedimentos(){
BoxSQL box = new BoxSQL();
List<Procedimento> listaProcedimento;
try{
listaProcedimento = box.getList("procedimentoTodos.sql", Procedimento.class);
}finally{
box.release();
}
return listaProcedimento;
}
}
[/code]
A pagina JSP
[code]<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
Código: | |
Descrição: | |
Valor: | |
Tipo: | ${tipoProcedimento.descricao } ${procedimento.tipoProcedimento.descricao } |
E o servlet[code]package sinthos.ctr;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sinthos.bean.Procedimento;
import sinthos.bean.TipoProcedimento;
import sinthos.dao.ProcedimentoDAO;
import sinthos.dao.TipoProcedimentoDAO;
import sun.reflect.ReflectionFactory.GetReflectionFactoryAction;
public class ProcedimentoCTR extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
public ProcedimentoCTR() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Define o tipo de resposta
response.setContentType("text/html; charset=iso-8859-1");
Procedimento procedimento = new Procedimento();
ProcedimentoDAO daoProcedimento = new ProcedimentoDAO();
//Envia o proximo código a ser cadastrado para tela
procedimento.setCodigoProcedimento(daoProcedimento.getProximoCodigoProcedimento());
request.setAttribute("procedimento", procedimento);
//Cria lista de tipos de procedimento
TipoProcedimentoDAO daoTipoProcedimento = new TipoProcedimentoDAO();
List<TipoProcedimento> listaTipoProcedimento = daoTipoProcedimento.getTodosTipoProcedimento();
request.setAttribute("listaTipoProcedimento", listaTipoProcedimento);
//Redireciona para tela
request.getRequestDispatcher("procedimento.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Define o tipo de resposta
response.setContentType("text/html; charset=iso-8859-1");
Procedimento procedimento = new Procedimento();
ProcedimentoDAO daoProcedimento = new ProcedimentoDAO();
String acao = request.getParameter("acao");
//Recupera dados da tela
procedimento.setCodigoProcedimento(Integer.parseInt(request.getParameter("codigo")));
procedimento.setDescricao(request.getParameter("descricao"));
procedimento.setValor(Double.parseDouble(request.getParameter("valor")));
//Cria o objeto TipoProcedimentoDAO para recuperar o tipo de procedimento do procedimento
TipoProcedimentoDAO daoTipoProcedimento = new TipoProcedimentoDAO();
//Atribui o tipo de procedimento recuperado para o procedimento que está sendo cadastrado
procedimento.setTipoProcedimento(daoTipoProcedimento.getTipoProcedimentoPorCodigo(Integer.parseInt(request.getParameter("tipoProcedimento"))));
//Condição dos botões
if(acao.equals("salvar")){
procedimento = daoProcedimento.salvarProcedimento(procedimento);
request.getRequestDispatcher("procedimento.jsp").forward(request, response);
}else if(acao.equals("excluir")){
daoProcedimento.excluirProcedimento(Integer.parseInt(request.getParameter("codigo")));
request.getRequestDispatcher("procedimento.jsp").forward(request, response);
}else if(acao.equals("pesquisar")){
procedimento = daoProcedimento.getProcedimentoPorDescricao(procedimento.getDescricao());
request.setAttribute("procedimento", procedimento);
request.getRequestDispatcher("procedimento.jsp").forward(request, response);
}else{
request.getRequestDispatcher("procedimento.jsp").forward(request, response);
}
}
}[/code]
Alguem pode me dar uma dica do que está acontecendo???