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: []
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<Procedimento> 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));
}
}
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;
}
}
<%@ 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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel='stylesheet' type='text/css' href='modelos/estilo.css'/>
<title>Procedimento</title>
</head>
<body>
<div class="principal">
<div class="cabecalho"></div>
<c:if test="${procedimento==null}">
<script language="javascript">window.location='procedimento.do'</script>
</c:if>
<div class="aba">
<a href="atendimento.htm"><img src="imagens/aba_cadastro1.png" border="0"></a><img src="imagens/aba_cadastro2.png"><a href="relatorios.htm"><img src="imagens/aba_cadastro3.png" border="0"></a>
</div>
<div class="conteudo">
<center>
<form name="cadProcedimento" id="cadProcedimento" method="post" action="procedimento.do">
<table>
<tr>
<td>Código: </td>
<td><input type="text" name="codigo" id="codigo" maxlength="6" value="${procedimento.codigoProcedimento }" size="4"/></td>
</tr>
<tr>
<td>Descrição: </td>
<td><input type="text" name="descricao" id="descricao" maxlength="50" value="${procedimento.descricao }"/></td>
</tr>
<tr>
<td>Valor: </td>
<td><input type="text" name="valor" id="valor" value="${procedimento.valor }"></td>
</tr>
<tr>
<td>Tipo: </td>
<td>
<select name="tipoProcedimento" id="tipoProcedimento">
<c:forEach items="${listaTipoProcedimento }" var="tipoProcedimento">
<option value="${tipoProcedimento.codigoTipoProcedimento }">${tipoProcedimento.descricao }</option>
</c:forEach>
<c:if test="${procedimento != null }">
<option value="${procedimento.tipoProcedimento.codigoTipoProcedimento }"/>${procedimento.tipoProcedimento.descricao }</option>
</c:if>
</select>
</td>
</tr>
</table>
<br/>
<img src="imagens/anterior.png"> <input type="text" name="navegar" id="navegar" size="4"/> <img src="imagens/proximo.png"/>
<br/>
<table>
<tr>
<td>
<input type="image" src=imagens/btn_salvar.png name="acao" value="salvar"/>
<input type="image" src=imagens/btn_excluir.png name="acao" value="excluir"/>
</td>
<td>
<input type="image" src=imagens/btn_pesquisar.png name="acao" value="pesquisar"/>
<input type="image" src=imagens/btn_limpar.png name="acao" value="limpar"/>
</td>
</tr>
</table>
</form>
</center>
</div>
<br/><br/><br/><br/><br/>
<a href="cadastros.htm"><img src="imagens/voltar.png" border="0"/></a> <img align="right" src="imagens/procedimento.png"/>
<div class="rodape">Copyright by SINTHOS</div>
</div>
</body>
</html>
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);
}
}
}
Alguem pode me dar uma dica do que está acontecendo????