Utiliza a annotation @JoinColumn em vez de @ForeignKey.
Abraço.
fredaguiar
Eu adicionei JoinColumn e o DESfuncionamento é o mesmo.
Se eu fizer assim nao funciona:
Usuario usu = (Usuario) session.get(Usuario.class, 1); String nome = usu.getUsuarioEmpresa().getNome(); // OK
Integer fk = usu.getUsuarioEmpresa().getId(); //fk = NULLLLLLLLLLLLLLLLLLL
Mas assim funciona:
Empresa emp = (Empresa) session.get(Empresa.class, 1);
Integer id= usu.getUsuarioEmpresa().getId(); // OK
POR QUE???
RicardoYukito
voce gerou o banco apartir dos seus pojo ?
se gerou… depois de adicionar joincolumn voce adicionou a coluna no banco ?
…
seu ManyToOne ta fetch=FetchType.LAZY…
no caso que nao deu certo, voce esta inicializando esse relacionamento ? …
fredaguiar
RicardoYukito:
voce gerou o banco apartir dos seus pojo ?
se gerou… depois de adicionar joincolumn voce adicionou a coluna no banco ?
…
seu ManyToOne ta fetch=FetchType.LAZY…
no caso que nao deu certo, voce esta inicializando esse relacionamento ? …
Sim, inicializei no Pojo e a coluna com a chave estrangeira foi criada automaticamente no banco.
O ManyToOne e’ LAZY.
Apos inserir a empresa no usuario, eu consigo ver a FK da empresa na tabela usuario.
RicardoYukito
Voce esta fechando a sessão que buscou esse usario antes de fazer isso ? … se estiver tenta fazer isso antes de dar o Session.close
fredaguiar
nao fechei a sessao.
eu consigo recuperar qualquer atrituto, menos o getId().
relacionamento manyToOne é EAGER por padrao … se deixa eager nao vai dar mais esse problema… quase certeza.
nao perguntei… mas seu sistema é web ? … se for acho que outra pessoa pode lhe ajudar melhor… mas já vi alguns casos falando pra usar openSessionInView exatamente pra evitar erros com lazy …
att…
fredaguiar
É web sim.
vou dar uma olhada nesse openSessionInView.
Valeu.