Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/12/2007 14:43:28
|
andre
Equipe
Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline
|
Boa tarde,
Tem algum método que salve e retorne o javabean, ou pelo menos o id do javabean que foi salvo? Como o método saveOrUpdate não retorna nada, tenho fazer querys só pra pegar o id do bean que acabou de ser salvo, e quando o bean é grande a query fica bem cabulosa =).
Obrigado!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/12/2007 18:12:38
|
brunoefa
Equipe
Membro desde: 06/06/2007 16:33:17
Mensagens: 6
Localização: Belo Horizonte
Offline
|
Blz Andre!
Quando você chama o método save, ele chama o saveOrUpdate(bean) passando o bean que você deseja salvar por parâmetro. O bean é passado por referência então assim que o bean é salvo na linha seguinte ele já tem o cd carregado.
Code:
super.salvar(request, bean);
o método saveOrUpdate é chamado, logo;
Code:
pode ser chamado.
|
brunoefa...
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 04/12/2007 10:54:30
|
andre
Equipe
Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline
|
Bom dia bruno,
Na verdade, a situação é a seguinte. Tenho um bean Pessoa que possui um bean Endereço. Tenho uma tela CRUD de Pessoa que possui campos para cadastrar o endereço.
Para salvar Pessoa e o Endereco, eu preciso sobreescrever o metodo saveOrUpdate(bean) de PessoaDAO, pegar o EnderecoDAO e salvar o endereco antes de salvar a pessoa, senão dá exceção.
Após salvar o endereço, o bean Endereco que está no bean Pessoa continua com id=0, então, tenho buscar no banco o endereço que acabou de ser salvo.
Abaixo o método saveOrUpdate sobrescrito
Code:
public void saveOrUpdate(PessoaFisica bean) {
Endereco endereco = bean.getEndereco();
EnderecoDAO enderecodao = Neo.getObject(EnderecoDAO.class);
enderecodao.saveOrUpdate(endereco);
if (endereco.getId() == 0) {
endereco = newQueryBuilder(Endereco.class).from(Endereco.class)
.whereLike("endereco.logradouro", endereco.getLogradouro())
.whereLike("endereco.numero", endereco.getNumero())
.whereLike("endereco.complemento",endereco.getComplemento())
.whereLike("endereco.bairro", endereco.getBairro())
.whereLike("endereco.cidade.nome",endereco.getCidade)
.getNome()).list().get(0);
bean.setEndereco(endereco);
}
super.saveOrUpdate(bean);
}
Tem alguma forma de automatizar esse procedimento, ou essa query é necessária?
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 04/12/2007 14:55:51
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Cara.. porque você não poe o código da tabela de endereço na sessão??
Tipo.. quando é uma tela de criação.. roda o insert.. quando é tela de edição de registro, no método alterar manda setar uma propriedade na sessão para guardar o código do endereço e dps quando estiver no salvar, você recupera o id.. entendeu?
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 04/12/2007 15:41:44
|
andre
Equipe
Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline
|
E ai pedro, blz
O problema é na hora de salvar pela primeira vez. Como o endereço ainda não tem id, eu preciso fazer aquela query só pra pegar o id do endereço que acabei de salvar. Neste caso, guardar o id do endereço na sessão não iria funcionar, pq sempre será zero.
Na tela de edição do registro não dá problema, pq o id já foi criado.
Valeu cara!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 05/12/2007 08:54:24
|
andre
Equipe
Membro desde: 26/11/2007 13:44:01
Mensagens: 27
Offline
|
Nossa que vacilo,
Esqueci de especificar o gerador automático de pk no bean endereço. Era só colocar a annotation @GeneratedValue(strategy=GenerationType.AUTO). Sem essa annotation o hibernate não coloca id nos objetos que passam de transiente para persistente. Eu sempre esqueço de colocar =P
Foi mal mesmo galera, podem até deletar o tópico, agora tá funcionando blz, e sem aquela query cabulosa.
Té mais!
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 05/12/2007 22:42:13
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
ehehehe..
sem problemas!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
|