Inserção de dados N-N JSP

0 respostas
H

Olá amigos … Ultimamente de tanto pesquisar assuntos JAVA para a minha aplicação acabei barrado nas dúvidas de SQL. Consegui desenvolver para a minha aplicação o CRUD que eu precisava(com metodos mega simples) só que quando recebi um Use Case que fazia relação de dados com outras tabelas parei na modelagem N - N . Se possivel, gostaria de tirar uma duvida com os amigos do forum.

Eu tenho um cadastro de Paciente e dentro desse form tenho uma ComboBox que me traz um ResultSet de outra Table. O relacionamento dela é N - N, tendo entao uma terceira tabela com as foreign key de paciente e convenio. Quando eu crio a minha String Sql (INSERT INTO pacientes…) eu preciso referenciar o ID de convenio na minha Table paciente. A questão é: Eu devo criar uma coluna Id_convenio( referente a primary key de convenio) ou devo referenciar o ID da terceira tabela ( id_pac_conv)???
Meu codigo segue abaixo . Aproveitando quero agradecer demais à colaboração dessa comunidade.

minha table convenio
CREATE TABLE convenios (
id_conv INTEGER  DEFAULT NEXTVAL ('seq_convenio') NOT NULL,
rz_social VARCHAR (25)  NOT NULL, 
cnpj VARCHAR (18) UNIQUE NOT NULL,
insc_estadual VARCHAR (17) UNIQUE NOT NULL,
logradouro VARCHAR (30) NOT NULL,
numero VARCHAR (4) NOT NULL,
cep VARCHAR (9) NOT NULL,
bairro VARCHAR (15) NOT NULL,
cidade VARCHAR (20) NOT NULL,
estado VARCHAR (20) NOT NULL,
tel_com VARCHAR (15) NOT NULL,
fax VARCHAR (15),
email VARCHAR (25),
vigencia VARCHAR (10) NOT NULL,
dt_cadastro VARCHAR (10) NOT NULL,
website VARCHAR (40),
CONSTRAINT convenio_pk PRIMARY KEY (id_conv)
);


minha table paciente

CREATE TABLE pacientes (
id_pac 	INTEGER DEFAULT NEXTVAL ('seq_paciente') NOT NULL,
nome VARCHAR (40) NOT NULL,
dt_nasc VARCHAR (10) NOT NULL,
dt_cadastro VARCHAR (10) NOT NULL,
sexo VARCHAR (9),
naturalidade VARCHAR (20),
rg VARCHAR (13) UNIQUE NOT NULL,
cpf VARCHAR (15) UNIQUE,
estado_civil VARCHAR (10) NOT NULL,
tel_res VARCHAR (15) NOT NULL,
tel_com VARCHAR (15),
tel_cel VARCHAR (15),
email VARCHAR (25),
logradouro VARCHAR (40) NOT NULL,
num_res VARCHAR (5) NOT NULL,
compl_num VARCHAR (15),
bairro  VARCHAR (20) NOT NULL,
cep VARCHAR (9) NOT NULL,
cidade VARCHAR (25) NOT NULL,
estado VARCHAR (25) NOT NULL,
tp_atendimento VARCHAR(10) NOT NULL,
num_conv VARCHAR (19),
obs VARCHAR (50),
id_hist INTEGER,
id_cons INTEGER,
CONSTRAINT paciente_pk PRIMARY KEY (id_pac)
);  


e a minha terceira table de relacionamento paciente/convenio

CREATE TABLE conv_pac (
id_conv_pac INTEGER DEFAULT NEXTVAL ('seq_conv_pac') NOT NULL,
id_pac INTEGER,
id_conv INTEGER,
CONSTRAINT conv_pac_pk PRIMARY KEY (id_conv_pac),
CONSTRAINT id_pac_fk FOREIGN KEY (id_pac) REFERENCES pacientes (id_pac),
CONSTRAINT id_conv_fk FOREIGN KEY (id_conv) REFERENCES convenios (id_conv)
);


estou usando o SGBD Postgres;

 o meu DAO é :

public class PacienteDAO extends ConexaoDAO {
    
            public void cadastrar(Paciente p) throws Exception {

		OpenDatabase();
		String SQL = "INSERT INTO pacientes (nome,dt_nasc,dt_cadastro,sexo,naturalidade," +
		" rg,cpf,estado_civil,tel_res,tel_com,tel_cel,email,logradouro," +
		" num_res,compl_num,bairro,cep,cidade,estado,tp_atendimento,convenio,num_conv,obs)" +
		" VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?,?);";


			pstmt = con.prepareStatement(SQL);

			pstmt.setString(1,p.getNome());
			pstmt.setString(2,p.getDt_cadastro());
			pstmt.setString(3,p.getDt_nasc());
			pstmt.setString(4,p.getSexo());
			pstmt.setString(5,p.getNaturalidade());
			pstmt.setString(6,p.getRg());
			pstmt.setString(7,p.getCpf());
                        pstmt.setString(8,p.getEstado_civil());
			pstmt.setString(9,p.getTel_res());
			pstmt.setString(10,p.getTel_com());
			pstmt.setString(11,p.getTel_cel());
			pstmt.setString(12,p.getEmail());
			pstmt.setString(13,p.getLogradouro());
			pstmt.setString(14,p.getNum_res());
			pstmt.setString(15,p.getCompl_num());
			pstmt.setString(16,p.getBairro());
                        pstmt.setString(17,p.getCep());
			pstmt.setString(18,p.getCidade());
			pstmt.setString(19,p.getEstado());
			pstmt.setString(20,p.getTp_atendimento());
                        pstmt.setInt(21,p.getConvenio().getId());
                        pstmt.setString(22,p.getNum_conv());
			pstmt.setString(23,p.getObs());

			pstmt.execute();
			CloseDatabase();

        }

e a minha Servlet é:
 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        try {
            String action=request.getParameter("action");

        if(action.equals("cadastrar")){
        Paciente p = new Paciente();
        p.setNome(request.getParameter("nome"));
        p.setDt_cadastro(request.getParameter("dt_cadastro"));
        p.setDt_nasc(request.getParameter("dt_nasc"));
        p.setSexo(request.getParameter("sexo"));
        p.setNaturalidade(request.getParameter("naturalidade"));
        p.setRg(request.getParameter("rg"));
        p.setCpf(request.getParameter("cpf"));
        p.setEstado_civil(request.getParameter("estado_civil"));
        p.setTel_res(request.getParameter("tel_res"));
        p.setTel_com(request.getParameter("tel_com"));
        p.setTel_cel(request.getParameter("tel_cel"));
        p.setEmail(request.getParameter("email"));
        p.setCep(request.getParameter("cep"));
        p.setLogradouro(request.getParameter("logradouro"));
        p.setNum_res(request.getParameter("num_res"));
        p.setCompl_num(request.getParameter("compl_num"));
        p.setBairro(request.getParameter("bairro"));
        p.setCidade(request.getParameter("cidade"));
        p.setEstado(request.getParameter("estado"));
        p.setTp_atendimento(request.getParameter("tp_atendimento"));
        p.setNum_conv(request.getParameter("num_conv"));
        p.setObs(request.getParameter("obs"));
        
        Convenio conv = new Convenio();
        conv.setId(Integer.parseInt(request.getParameter("convenio")));
        

        PacienteDAO pacDAO = new PacienteDAO();
        try{
            pacDAO.cadastrar(p);
           response.sendRedirect("cadastroSucesso.jsp");
            }
        catch(Exception e){
            out.print("Erro: "+ e.getMessage());
            }
        }

Desde já agradeço a atenção de todos.

Criado 12 de outubro de 2011
Respostas 0
Participantes 1