Salvar um bean com hibernate, mas a referencia a outros beans não é colocada no comand update!

Tenho o bean usuario que tem o bean pefil dentro dele.
quando preencho o usuario e seto um perfil nele…
e chamo um marge do hibernate no bean usuario
o hibernate gera um comando update setando null no perfil da tabela usuario…
sendo qeu se testo ara obter o usuario, o bean perfil vem preenchido certinho…

que anotação preciso por pro hibernate “ver” esse join e gravar a o id do perfil no meu usuario…

Voce tem que ter um relacionamento mapeado entre Usuario e Perfil ,OneToOne - um Usuario pode ter um perfil e um perfil pode pertencer a 1 usuario , ai o proprio Hibernate vai criar uma FK dentro de cada tabela referenciando suas entidades para voce . :slight_smile: da uma googlada ai OneToOne com hibernate é facil , ta ussando annotations ou XML?

1 Pergunta .
Quando voce faz essa query obter , voce pesquisa pelo perfil ou pelo usuário? porque se ele traz alguma coisa tem algo errado…
como ta trazendo se ta null, imagino que voce esteja pesquisando na tabela perfil ussando a pk do usuário , porem este usuario não esta com relacionamento
correto com a sua outra tabela por isso esta gravando null.

hehe…
seguinte… não cheguei fazer tanta gambiarra ainda!!

mas tenho anotado onetoone no atributo perfil do meu bean usuario.

e ao obter vem certinho…

quando faço um merge…
ele nao atualiza o surperfil da tabela usuario…

esse esquema de pesquisar na perfil com id do usuario… não cheguei nem perto de fazer…
valeu pela força,

mas a duvida é preciso por qeu anotação no atributo do bean usuario pra ele identifica a ideperfil e gravar…

Se você tem o mapeamento feito corretamente , esta setando o perfil no Usuário antes de chamar o método , e mesmo assim esta gravando como null… Até ai blz!?
oque não entendo é como voce consegue fazer o SELECT e trazer o objeto, se tu não ta pesquisando na tabela perfil e como acabou de falar a tabela usuario esta gravando null ?

Coisa do :twisted: Não … xD

Não quis ofender falando que tu ta fazendo POG , é que só pelo texto que tu escreveu a unica possibilidade que enxerguei de tu retornar o objeto foi aquela xD , pois a outra tabela convenhamos não tem relacionamento algum (pois esta set null) … post code Here :slight_smile: , ai agente ve , alguma coisa de errada tem ai , ou se não chama a Dona Marta buzios e tarõ que esse BD seu ta retornando coisa que nem existe …

hehehe, sem problemas… POG são detalhes…

mas eu inseri no braço esse registros no banco…
e agora afui testar com hibernate fazendo updates e inserts e nao funciona…

tu consegue por um codigo que tu usa pra mapear os 2 beans com OneToOne
talvez falta alguma coisa no meu codigo.
valeu pela ajuda…

me disseram certa vez
(Ofender um POG teu é que nem chingar a mãe… não se faz!! hahahaha)

@Entity public class Customer implements Serializable { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name="passport_fk") public Passport getPassport() { ... } @Entity public class Passport implements Serializable { @OneToOne(mappedBy = "passport") public Customer getOwner() { ... }

Ou se quiser ser mais especifico

@Entity
public class Customer implements Serializable {
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "CustomerPassports",
joinColumns = @JoinColumn(name="customer_fk"),
inverseJoinColumns = @JoinColumn(name="passport_fk")
)
public Passport getPassport() {
...
}

public class Passport implements Serializable { @OneToOne(mappedBy = "passport") public Customer getOwner() { ... }

ai o meu problema…
nao tinha especificado nada de anotação no meu bean de perfil…
hehe
novatos!!!
valeu pela ajuda… agora acho qeu vai funcionar… mas vo conseguir testar so de meio dia em casa!!!
abraços, valeu pela ajuda!

mais uma pergunta
aquele passport_fk do 1º exemplo, é o nome da foreign ou o nome do campo mesmo?
valeu

@JoinColumn(name="passport_fk") public Passport getPassport() { // é o nome da coluna no BD perceba que aqui é seu métodoGetPassport(); ... }

poise…
comecei a pouco tempo usar hibernate…
to bem xucro nisso ainda…
mas acahva que so setando na declaração dos campos estava ok!!
mas preciso fazer isso também nos metodos!

Aqui tem a resposta para todas as suas futuras dores de cabeça , http://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/pdf/hibernate_reference.pdf
Hibernate é muito bom , quando não mascara os erros , (:
tente tratar os exceptions dos seus métodos da maneira mais especifica possível , sei que tem até uma classe HibernateException nunca ussei , mas ja vi no projeto de alguem aqui , digo isso porque quando começar dar erro nos métodos , não retorna , não popula lista etc etc etc , ai sim você terá alguns problemas :smiley:

Anotar as classes é mais ter um exemplo , não tem como saber tudo , flw

ps* a documentação do link esta em portugues , muito de boa ussar ,fica a dica ! flw

obrigado ai tche…
vai ser de grande ajuda sim!!!
boa semana!