estou quase terminando o projeto na interface grafica, so vai faltar isso agora, alguem me ajuda?
Olá Hammer, não sei se vai te ajudar, pois quando trabalhei com Hibernate foi com a versão 3.1, onde eu configurava o hibernate.cfg.xml para o mapeamento das classes e um arquivo NomeDaClasse.hbm.xml mapeando os atributos da classe e seus relacionamentos. Abaixo um exemplo simples:
Nesse exemplo tenho uma classe Objeto que está relacionanda com a classe Status, sendo que cada Objeto tem q ter um status. Então no arquivo Objeto.hbm.xml q mapeia a classe Objeto acrescento o código abaixo para efetuar esse relacionamento com a coluna idstatus da tabela status.
<many-to-one name="status" column="idstatus" class="br.com.teste.teste1.bean.Status" lazy="false"/>
Espero que tenha te ajudado, e não atrapalhado.
vlw pela ajuda cara mas nao to conseguindo ainda…
oq eu gostaria era q o campo Endereco_ID na classe cliente por exemplo tivesse o mesmo valor id da classe endereco, isso sao os valores da tabela, como q eu faco isso?
alguma sugestao para isso?
vamos ver se eu entendi
vc tem uma tabela funcionario que tem um campo id (q provavelmente de ser uma pk)
na tabela de endereço vc tem um campo endereco_id que vai conter o id do funcionario, ou seja, é uma fk
cara não sei como esta seu código para fazer a persistência, mas acho q vc primeiro deve persistir o funcionário, pois só depois desse passo vc vai ter o id do seu funcionário e depois deve persistir o endereço
espero que funcione e boa sorte
tava vendo isso na net, mas eh assim:
na minha tabela funcionario tem Endereco_ID, eh em funcionario isso, esse campo deve conter o ID do endereco desse funcionario, o problema eh q esse campo fica sempre 0. como eu poderia fazer isso? persisitir primeiro endereco? e depois funcionario? seria isso?
cara vc vai ter que persistir primeiro o funcionario, depois vai consultar esse funcionario e pegar a PK dele e depois quando persistir o endereço vc vai colocar a pk do funcionario no lugar de Endereço_Id
agora entendi, então é isso mesmo vc deve persistir primeiro o endereço, pois vai ser gerado o id do endereco e depois pesistir o funcionaio.
como vc vai fazer isso?
seguinte, vc deve ter uma classe q representa o endereco certo, então depois de aberta a conexão com o banco instancie o endereco, carregue-o e persista ele (session.save(endereco) acho que isso…) depois instancie o funcionário, carregue-o e persita ele. não se esquece que no seu arquivo de mapeamneto deve ter o relacionamento entre as tabelas.
acho q o caminho é esse mesmo, não me lembro direito das sintaxes, mas me lenmbro que quando estava fazendo execircios de um tutorial encontrado aqui no GUJ http://www.guj.com.br/java.tutorial.artigo.174.1.guj
tive um problema bem parecido e apanhei um bocado até perceber que era isso
espero ter ajudado e boa sorte
entao eu devo persistir primeiro o endereco para q e saiba qual o id dele para colocar em funcionario no campo Endereco_ID certo?
me desculpe mas sou novato, esse eh meu primeiro projeot utilizando o hibernate, mas gostaria de saber o que eh esse arquivo de mapeamento, e so pra avisar eu estou usando o annotations do hibernate q parece q nao precisa disso, eu dou apenas um @JoinColumn(Endereco_ID).
axo q desse jeito persistir um e depois o outro da certo, mas gostaria de saber como vou colocar esse inteiro no campo endereco_ID em funcionario ja q esse campo na minha classe eh uma referencia ao objeto Endereco.
UP
cara tbem sou novato, mas como dei uma estudada no tutorial que te passei e tive o problema parecido te dei esses toques (q tbem não sei se vai resolver, mas acho que temos q nos ajudar, pq tbem aprendemos juntos…).
O arquivo de mapeamento seria um arquivoxml onde vc mapeia os campos da tabela para os atributos o objeto, mas vc esta usando annotation.
Não sei mas acredito que devido ao relacionamento depois q vc persistir o endereço vc concegue obter o id sem ter q fazer uma nova consulta.
Depois de "pegar " o id vc o coloca na sua classe funcionario no atributo end_id e persiste.
Cara vou acompanhar seu post para saber se conseguiu (e aproveitar ir aprendendo mais sobre o hibernate), espero ter ajudado com o pouco que conheço
boa sorte
mt obg cara, e vc deveria tentar usar o annotation pois facilita mt o trabalho da gente, e realmente isso q vc falou eh verdad, posso conseguir o id sem fazer uma nova consultar depois q persistir o endereco, ja vi isso aq no forum, vou ver como faco isso e depois retorno aq, minha unica pergunta eh como vou colocar esse id em endereco_ID em funcionario, ja q ele recebe retorna um objeto da classe endereco.
axo q vou ter q criar um novo campo na classe q seja um inteiro e q seja mapeado tb por Endereco_ID, axo q pode dar certo, hj pela manha vou tentar fazer isso.
para persistir nesse caso, vc pode fazer algo assim…
vc tem um objeto q é o funcionário… vamos chamá-lo de func
func.setEndereco(new Endereco());
func.getEndereco().setId(idendereco);
esse idendereco é o q vc acabou de persistir…
espero ter ajudado
tava pesquisando mas nao to conseguindo, axo q se eu conseguir isso resolve o meu problema, to kerendo saber como recuperar o id qd eu persisto um objeto no banco de dados sem fazer uma nova consulta, alguem poderia me explicar?
terminei todo o mue projeot so falta isso. =/
UP
ja vi isso q eu to kerendo por aq no forum mas nao estou conseguindo, axo q eh uma coisa simples, alguem pode me ajudar?
por favor alguem me responda so isso q axo q consigo, peskisei na net so q nao estou conseguindo fazer.
o meu metodo save teria dois argumentos agora, o funcionario e endereco, eu salvo endereco primeiro guardando o id dele e antes d salvar funcionario coloco esse numero no campo Endereco_ID, eu axo q assim ta legal.
mas, como recuperar a id na hora de salvar sem fazer uma nova busca?
alguem sugestao? alguem pode me ajudar? to pesquisando mt mas nao to conseguindo axo q alguem daq ja passou por isso e pode me ajudar
Hammer, pare de ficar postando mensagens somente para subir o tópico. Coloque sua dúvida, mas nao fique de braços cruzados. Se esforce um pouco e tente achar a resposta sozinho.