Olá Boa Tardee todos!!!
Já conseigo fazer o mapeamento normal, mas estou com duas tabelas que funcionam da seguinte forma:
Tabela1: Usuario
Campos:
id: INT
nome: CHAR
cpf: CHAR
Tabela2: Endereco
Campos:
id_usuario: INT (Esse campo é PK e FK da tabela Usuário)
rua: CHAR
numero: INT
Com essas tabelas qndo vou cadastrar um usuario usando hibernate, ele não consegue inserir o endereço pois eu não passo para ele o ID, esse ID seria no caso o ID da tabela Usuario que eu cadastrei anteriormente. Será que tenho que cadastrar o Usuario e depois cadastrar o Endereco para este Usuario?
Como seria feita as anotações corretas???
Os códigos abaixo:
Classe Usuario:
@Entity
@Table(name="USUARIO")
public Class Usuario implements Serializable{
@Id
@Column(name="ID")
private Long id;
@Column(name="NOME")
private String nome;
@Column(name="COF")
private String cpf;
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn()
private Endereco endereco = new Endereco();
... gets, sets, equal e hashCode
}
Classe Endereco:
@Entity
@Table(name="ENDERECO")
public Class Endereco implements Serializable{
@Id
@Column(name="ID_USUARIO")
private Long id;
@Column(name="RUA")
private String rua;
@Column(name="NUMERO")
private int numero;
... gets, sets, equal e hashCode
}
Bom qndo vou dar um merge por exemplo:
em.getTransaction().begin();
Usuario u = new Usuario();
u.setNome("teste");
u.getEndereco().setRua("Rua");
em.merge(u);
em.getTransaction().commit();
Ele da o seguinte erro:
javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.br.Endereco
Alguem sabe a meneira pra eu falar pro hibernate que o ID vai ser uma chave estrangeira de Usuario e primária também?
Obrigado a todos
=D
Abraçoss