[color=blue][/color][size=18][/size]
Boa noite , sou iniciante neste fórum , e estou fazendo um projeto onde preciso cadastrar cargos Ex : médico , enfermeiro … minha tela possui um codigo e o nome do cargo , minha classe a mesma coisa , só que no projeto do banco de dados ele recebe também outras duas chaves estrangeiras e se eu tento cadastrar o cargo dá um SQLException porque eu tento inserir na tabela mas sem as chaves estrangeiras , alguém sabe me dizer o que eu faço com as chaves estrangeiras ???
Trabalhando com chaves estrangeiras
7 Respostas
está usando jdbc puro ou hibernate?
[color=blue][/color][size=18][/size]
Boa noite , sou iniciante neste fórum , e estou fazendo um projeto onde preciso cadastrar cargos Ex : médico , enfermeiro … minha tela possui um codigo e o nome do cargo , minha classe a mesma coisa , só que no projeto do banco de dados ele recebe também outras duas chaves estrangeiras e se eu tento cadastrar o cargo dá um SQLException porque eu tento inserir na tabela mas sem as chaves estrangeiras , alguém sabe me dizer o que eu faço com as chaves estrangeiras ???
Ficou meio vago sua pergunta, mas td bem.
Vc não pode esquecer das dependencia, lembra. Primeiro a tabela sem foreign key, depois as tabelas q puxam a foreign key dela.
Por exemplo: Tabela A puxa a chave de B. Então deve persistir a classe mapeada para B primeiro, sacou?
Depois vc persiste a classe mapeada para A.
Posta suas duas classes ai, e sua persistencia tb. há entre [CODE]
Falow, até.
Olá eu tenho uma classe cargo com cod e nom , já fiz os metodos de cadastrar cargo tá tudo certo , ja fiz as tabelas com as chaves estrangeiras no postgre e quando clico em incluir dá uma SQLExceotion dizendo que tenho que preencher as chaves estrangeiras da tabela cargo só que nao sei como fazer isso porque a tela so possui dois capo a serem preenchidos o conteudo das chaves primarias nao sei de onde pegar.
Minhas classes abaixo :
package modelo;
public class Cargo
{
private int cod;
private String nome;
public int getCod() {
return cod;
}
public void setCod(int cod) {
this.cod = cod;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Classe ControleCargo
// extrai os componentes da tela
JTextField tx_cod = (JTextField)painel_dados.getComponent(1);
JTextField tx_nome = (JTextField)painel_dados.getComponent(3);
// cadastra no banco
if ( e.getActionCommand().equals(“Incluir”))
{
if(tx_cod.getText().equals("")||tx_nome.getText().equals(""))
{
JOptionPane.showMessageDialog(null,“Por favor preencha o campo COD e NOME para realizar o cadastro”,“Atenção”, JOptionPane.ERROR_MESSAGE);
}
else
{
daocg.cadastrar ©;
JOptionPane.showMessageDialog(null,“Cargo cadastrada com sucesso !!!”,null,JOptionPane.INFORMATION_MESSAGE);
}
}
Classe DAOCargo
public void cadastrar(Cargo c)
{
try
{
PreparedStatement ps = DAOFactoryPSQL.getConnection ().prepareStatement ( “insert into cargo values (?,?)”);
ps.setInt(1,c.getCod());
ps.setString(2,c.getNome());
ps.executeUpdate() ;
}
catch ( Exception e )
{
System.out.println(e.getMessage());
}
}
a tabela no banco de dados …
CREATE TABLE cargo
(
cod integer NOT NULL,
funcionario_pessoa_cpf character varying NOT NULL,
funcionario_matricula integer NOT NULL,
nome character varying,
CONSTRAINT cargo_pkey PRIMARY KEY (cod),
CONSTRAINT cargo_funcionario_matricula_fkey FOREIGN KEY (funcionario_matricula)
REFERENCES funcionario (matricula) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT cargo_funcionario_pessoa_cpf_fkey FOREIGN KEY (funcionario_pessoa_cpf)
REFERENCES pessoa (cpf) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
E o erro …
ERROR: null value in column “funcionario_matricula” violates not-null constraint sei o que significa o erro , só nao sei como concertar na implementação.
Mais uma vez obrigada a todos pela disponibilidade!
estou usando JDBC com o banco de dados postgresql
Coloque o código entre a tag [code] para ficar melhor a vizualização do código :wink:
estou usando JDBC com o banco de dados postgresql
Entendi.
O seguinte, Controle_de_cargo puxa as chaves das outras tabelas.
como puxa, vc tem q dar um select nas tabelas q controledecargo depende.
vc tb pode colocar dois campos a mais, para as repectivas chaves estrangeiras. e add no insert tb.
Depois vc arruma, é so para vc ter uma ideia.
Há detalhe como é ControleCargo tem q ter cadastrado essas duas chave estrangeiras nas tabelas q ControleCargo depende.
Outra coisa, qndo vc postar um codigo coloca entre as tag e em minusculo.
at+
Aos amigos que me ajudaram , muito obrigado , só estava faltando o select no meu código …
Gostei muito deste fórum e prometo participar mais vezes , não so postando minhas duvidas como tambem tenando ajudar.