Tenho duas tabelas:
// Tabela Fonecedor
CREATE TABLE 'fornecedor(
idint(10) unsigned NOT NULL auto_increment,
nomevarchar(45) NOT NULL default '', PRIMARY KEY (
id`)
);
// Tabela endereco
CREATE TABLE endereco
(
id_fornec
int(10) unsigned NOT NULL default ‘0’,
rua
varchar(45) NOT NULL default ‘’,
PRIMARY KEY (id_fornec
),
CONSTRAINT FK_ender_1
FOREIGN KEY (id_fornec
) REFERENCES fornecedor
(id
) ON DELETE CASCADE ON UPDATE CASCADE
);
// Objeto Fornecedor
@Entity
public class Fornecedor implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = “id”, nullable = false)
private Integer id;
@Column(name = “nome”, nullable = false)
private String nome;
@OneToOne(cascade = CascadeType.ALL, mappedBy = “fornecedor”)
private Endereco endereco;
// Objeto Endereco
@Entity
public class Endereco implements Serializable {
@Id
@Column(name = “id_fornec”, nullable = false)
private Integer idFornec;
@Column(name = “rua”, nullable = false)
private String rua;
@JoinColumn(name = “id_fornec”, referencedColumnName = “id”, insertable = false, updatable = false)
@OneToOne
private Fornecedor fornecedor;
Quando vou persistir o objeto Fornecedor pela primeira vez (insert) uma exceptions e gerada dizendo, que o id_fornec nao pode ser nulo, ou seja o JPA nao esta usando automaticamente o ID gerado pelo fornecedor para definir a FK automaticamente. Ele espera que eu setId_fornec manualmente.
Eu não estou conseguindo fazer uma anotação para que ele peque a Pk criada pelo mysql e crie o endereço setando a FK com esta PK automaticamente.
Estou trabalhando com NetBeans e JPA (TopLink Essentials).
Alguem pode me ajudar?