Dúvida relacionamento Hibernate
Olá Pessoal Boa Noite
Estou com uma dúvida no relacionamento entre duas Entidades:
Tenho uma entidade com nome CadastrarSecretaria (chave primaria codigosecretaria) e outra CadastrarSolicitante (chave estrangeira codigosecretaria) , fiz o relacionamento das mesmas e fiz um cadastro de uma secretaria cadastrou normalmente. Na tabela do banco de dados (CadSolicitante) não aparece a minha o codigosecretaria. Pois ao tentar cadastrar algum solicitante dar erro porque esse campo esta null. O que devo fazer pra resolver- lo?
Segue o código:
CadastrarSecretaria
CadastrarSolicitante
@OneToMany(mappedBy = "secretaria", fetch = FetchType.LAZY) private List<CadastrarSolicitante> cadastrarSolicitante;
@OneToOne @JoinColumn(name = "codigosecretaria") private CadastrarSecretaria secretaria;
Roberto Rodrigues.
Curtidas 0
Respostas
Carlos Mazzi
06/07/2010
Se vc for colocar o campo para preenchimento do usuario, vc deve ter esse mesmo campo, no seu DAO e Faces...
Caso contrario , se vc quer se seja o código de algum usuario que está logado no sistema, vc deve atribuir como um parametro...
E o erro é por que no banco de dados, fisicamente existe a integridade referencial da mesma.
Caso contrario , se vc quer se seja o código de algum usuario que está logado no sistema, vc deve atribuir como um parametro...
E o erro é por que no banco de dados, fisicamente existe a integridade referencial da mesma.
GOSTEI 0
Roberto Rodrigues.
06/07/2010
Carlos eu coloquei o campo pro usuario escolher (combo), quando cadastrar um solicitante ele tem que escolher uma das secretarias selecionadas ate tudo ok, o usuario já esta digitando e selecionando uma das secretarias. Agora vem o problema despois de digitar o nome do solicitante e selecionar a secretaria o usuario tem que clicar no buttom "confirmar", sendo que a minha dúvida é no armazenamento, porque no banco tem que ser armazenado é o código (chaveprimaria) relacionado com o nome da secretaria selecionada. Por exemplo:
Cadastro
Nome: Teste
Secretaria: testando
Buttom "confirmar"
ARMAZENAR NO BANCO
NOME codigo
teste 1
NO CAMPO CÓDIGO TEM QUE ARMAZENAR O CODIGO E NÃO O NOME SELECIONADO!
GOSTEI 0
Dyego Carmo
06/07/2010
Resolvido ?
GOSTEI 0
Roberto Rodrigues.
06/07/2010
Dyego todo post meu você fica perguntando se já esta resolvido, quero saber porque?
Pode ficar tranquilo que quando alguem me ajudar a resolver eu fecho o post, agora não quer ajudar não fica pressionando pra fechar o post não, porque pelo menos a minha pessoa você nunca ajudou aqui no forum so fica perguntando se já esta resolvido.
GOSTEI 0
Carlos Mazzi
06/07/2010
Ops... calma companheiro.. isso é uma pratica que as vezes fazemos, para saber se a pessoa está realmente vendo o post que foi lançado, pois algumas vezes as pessoas lançam e esquecem...."caem no esquecimento".. e como normalmente somos os moderadores, ficamos com a função de "limpar" os posts, duplicados, propagandas, etc... e os chamados em aberto, cancelados tbm...
Mas fica sussegado, creio que ele nao tenha feito por pressão, eu tbm faço isso, mas é em busca de organizar o barato, beleza?
Vamos ao que interessa, no meu caso eu tentaria ver os métodos equals e hashcode do Bean selecionado, vc já verificou essa parte?
GOSTEI 0
Roberto Rodrigues.
06/07/2010
Carlos, primeiramente desculpa. Aqui esta o meu equals e hashCode, não entendir o que tentou me indicar a respeito desse codigo.
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final CadastrarSolicitante other = (CadastrarSolicitante) obj;
if (this.codigocadsolicitante != other.codigocadsolicitante && (this.codigocadsolicitante == null || !this.codigocadsolicitante.equals(other.codigocadsolicitante))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + (this.codigocadsolicitante != null ? this.codigocadsolicitante.hashCode() : 0);
return hash;
}
@Override
public String toString(){
return nome;
} GOSTEI 0