Problemas com chave estrangeira [RESOLVIDO]

Bom pessoal,

Tenho uma tabela usuario que possui uma chave estrangeira que armazena o código do funcionario, mas não estou conseguindo criar um novo funcionario devido a FK … será q alguem poderia me ajudar … Obrigada!

[code] public Usuario criarUsuario(ResultSet rs) {

    try {
        Usuario user = new Usuario();
        //aqui é onde eu tento criar o funcionario de codigo tal ... mas dá erro!!!
        user.getCodFuncionario().setCodigo(Integer.parseInt(rs.getString("cod_funcionario")));
        user.setLogin(rs.getString("login"));
        user.setSenha(rs.getString("senha"));

[/code]

Erro!

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at dao.UsuarioDao.criarUsuario(UsuarioDao.java:99) at dao.UsuarioDao.selecionarUsuario(UsuarioDao.java:121) at view.manter.ManterUsuarios.<init>(ManterUsuarios.java:35) at view.TelaPrincipal.jMenuItemUsuariosActionPerformed(TelaPrincipal.java:367) at view.TelaPrincipal.access$600(TelaPrincipal.java:32) at view.TelaPrincipal$7.actionPerformed(TelaPrincipal.java:164) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Quando vc cria um objeto Usuario

Usuario user = new Usuario();

dentro desse construtor vc também cria um objeto CodFuncionario ?

porque se não estiver criando esse objeto, vc ganha um NullPointerException na linha:

user.getCodFuncionario().setCodigo(Integer.parseInt(rs.getString("cod_funcionario")));

Eu crio um codFuncionario, mas da tabela Usuario que é FK da tabela funcionario …
Acho q consegui intende o que me disse …
Mas não sei o que vou ter q fazer para resolver … vou ter q passar um funcionario completo ?

Vlw…
[]s

Se você precisar do Funcionario completo depois que salvar ele, então seria interessante vc consultar todas as informações dele.

Se vc apenas coloca o cod_funcionario para salvar ele então da forma que vc fez está certo.

Mas acho que para corrigir esse problema, vc tem que colocar um construtor na classe Usuario que seria +ou- assim:

public class Usuario {
  //Atributos

  public Usuario() {
    this.codFuncionario = new Funcionario(); //Aqui vc instancia o tipo do objeto codFuncionario.
  }

Mas eu não estou criando um novo funcionario, tenho q pegar o valor de um funcionario jah existente!
acho q não to conseguindo intender …

entendo, mas antes de vc poder atribuir os valores para seu codFuncionario ele precisa ser criado em algum momento, exemplo:

//Se o codFuncionario for null, ou seja, ainda não estiver criado.
user.codFuncionario = null;

// Se você tentar atribuir o valor para algum atributo, vc ganha um NullPointerException
user.getCodFuncionario().setCodigo(1); 

Agora acho que consegui compreender …

MuitoO obrigada rsakurai…

Vc me ajudou bastante …

[]'s!