Mapeamento Hibernate

Galera, é o seguinte, fiz um relacionamento com o hibernate de 1-1, e corrigi outros erros que apareceram, porém está acontecendo uma coisa estranha, ele insere os dados certinho no banco, mas o fk fica null.

Modelo Cliente

[code]@Entity
public class Cliente {

@Id 
@GeneratedValue
private Long id;
private boolean juridica;
private String nomeOuRazaoSocial;
private String nomeFantasia;
private String cpfOuCnpj;
private String rgOuInscricaoEstadual;

@Temporal(TemporalType.DATE)
private Calendar dataNacimentoOuCriacaoEmpresa;

@Temporal(TemporalType.DATE)
private Calendar dataAdesao;

private Double limite;
private Double saldo;

@OneToOne(mappedBy = "cliente", targetEntity = Endereco.class, fetch = FetchType.LAZY, cascade = javax.persistence.CascadeType.ALL)  
private Endereco endereco;

//geters e setters
}[/code]
Modelo Endereco

[code]@Entity
public class Endereco {

@Id
@GeneratedValue
private Long id;
private String rua;
private String numero;
private String complemento;
private String bairro;
private String cidade;
private String estado;
private String cep;
private String pontoReferencia;

@OneToOne
@JoinColumn(name="cliente_id")
private Cliente cliente;

//geters e setters
}[/code]
Hibernat.cfg.xml

[code]


root




jdbc:mysql://localhost/xxx


com.mysql.jdbc.Driver


org.hibernate.dialect.MySQL5InnoDBDialect

<property name="hibernate.hbm2ddl.auto">update</property>

<property name="show_sql">true</property>
<property name="format_sql">true</property>

<!-- entidades -->
<mapping class="br.com.xxx.model.Endereco" />
<mapping class="br.com.xxx.model.Cliente" />
<mapping class="br.com.xxx.model.DadosBancarios" />
[/code] Alguém poderia me ajudar que ainda não consegui encontrar o porque?

Seria bom também postar o código da ação envolvida nesta inserção. Além disso, o comando SQL de INSERT ou UPDATE gerado Hibernate.

Isso mesmo a parte da inserção é mto importante
pelo jeito o problema esta nela

Segue o sql gerado pelo hibernate:

Hibernate: insert into Cliente (cpfOuCnpj, dataAdesao, dataNacimentoOuCriacaoEmpresa, juridica, limite, nomeFantasia, nomeOuRazaoSocial, rgOuInscricaoEstadual, saldo) values (?, ?, ?, ?, ?, ?, ?, ?, ?) Hibernate: insert into DadosBancarios (cliente_id, codigoAgencia, codigoBanco, contaCorrente, dataAberturaConta, nomeAgencia, nomeBanco) values (?, ?, ?, ?, ?, ?, ?) Hibernate: insert into Endereco (bairro, cep, cidade, cliente_id, complemento, estado, numero, pontoReferencia, rua) values (?, ?, ?, ?, ?, ?, ?, ?, ?)

Segue a classe de teste:

[code]public static void main(String[] args) {

    Cliente cliente = new Cliente();
    
    cliente.setCpfOuCnpj("Teste CPF");
    Calendar date = new GregorianCalendar(2012, 11, 27);
    cliente.setDataAdesao(date);
    cliente.setDataNacimentoOuCriacaoEmpresa(date);
    cliente.setJuridica(true);
    cliente.setLimite(200.00);
    cliente.setNomeFantasia("Teste nome fantasia");
    cliente.setNomeOuRazaoSocial("Teste razao social");
    cliente.setRgOuInscricaoEstadual("teste rg ou inscrição");
    cliente.setSaldo(100.00);
    
    Endereco endereco = new Endereco();
    endereco.setBairro("teste Bairro");
    endereco.setCep("29070-110");
    endereco.setCidade("teste cidade");
    endereco.setComplemento("teste complemento");
    endereco.setEstado("teste estado");
    endereco.setNumero("00");
    endereco.setPontoReferencia("teste ponto de referencia");
    endereco.setRua("teste rua");
    
    cliente.setEndereco(endereco);
    
    DadosBancarios dadosBancarios = new DadosBancarios();
    dadosBancarios.setCodigoAgencia("teste agencia");
    dadosBancarios.setCodigoBanco("teste banco");
    dadosBancarios.setContaCorrente("teste conta");
    dadosBancarios.setNomeAgencia("teste nome agencia");
    dadosBancarios.setNomeBanco("teste nome banco");
    
    cliente.setDadosBancarios(dadosBancarios);

    new ClienteDao().salvar(cliente);

// new EnderecoDao().salva(endereco);
}[/code]

Ninguém?

Consegui galera, mas achei a solução estranha…

pra resolver o que fiz:

cliente.setEndereco(endereco);
endereco.setCliente(cliente);

Aí ele grava a chave estrangeira…

Isso tá certo?