RESOLVIDO! Duvida sobre hibernate annotations

3 respostas
diogoprosoft

Galera estou com duas duvidas no hibernate annotations, vou explicar:

1- Tenho duas classes mapeadas por exemplo(Pessoa, Endereco), quando vou persistir a Pessoa ela gera no banco o codigo = “1” e logo em seguida quando vou persistir a tabela Endereco ela gera o codigo = “2” ao inves de gerar o codigo = “1” para ela tbm, pq isso ocorre? tem solucao?

2- Se eu for persistir a classe Pessoa, sendo que o campo rg e cpf sao = “unique” e eu informo um ja existente ele nao salva o registro no banco(e claro), porem ele me gera o codigo da sequence como se tivesse sido persistido, pq isso ocorre? tem solucao?

3 Respostas

ignacio83

Vc deve estar utilizando a mesma sequence para as duas tabelas, dê uma verificada…

O hibernate vai sempre chamar a sequence antes do insert, não tem como ele fazer de outra maneira… O que vc pode fazer é fazer essa validação antes de chamar o .save(). Consulte o banco e verifique se já existe algum registro com esse RG e CPF.

Lavieri
Pessoa...
public class Pessoa {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "pessoa")
    private Endereco endereco;
    
    //...restante

}
Endereco...
public class Endereco {
    @Id
    @Basic(optional = false)
    @Column(name = "pessoa_id")
    private Pessoa pessoa;

    //...restante

}

ai a tabela Pessoa seria

id
nome
cpf
etc etc etc...

e a tabela Endereco seria
pessoa_id
endereco
numero
bairro
etc etc etc...

diogoprosoft

Valeu Lavieri,

Realmente fiz um teste aqui e tive que dar um nome as sequences para diferenciar a sequencia de valores. E para o salvar vou ver aqui mais creio que terei que fazer o que vc me disse.

Valeu pela ajuda (y)

Criado 20 de março de 2009
Ultima resposta 20 de mar. de 2009
Respostas 3
Participantes 3