Fórum Persistir dados em entidade OneToOne #499406
28/10/2014
0
Entidade A
@id
@GenerateValue(strategy = Generation.IDENTITY)
@Column
private Integer id;
@Column
private String nome
@OneToOne(cascade = {cascadeType.ALL},mappedBy "A")
entidade B @id @Column private Integer id; @JoinColumn(name="id", refereneColumnName="id") @OneToOne private String endereco;
quando eu vou persistir a tabela A com os dados da tabela B, sendo que a chave da tabela B, eu dei um get do id da tabela ha apresenta esse erro:
ids for this class must be manually assigned before calling save().
sei que isso acontece que a minha chave da tabela B setei de forma manual, e que s tenho o valor da tabla de A depois que eu persistir porque o meu método me retorna um objeto, porem gostaria de fazer esse tipo de transação sem ter que persiste as classe separadamente
John Lima
Curtir tópico
+ 0Posts
28/10/2014
Ronaldo Lanhellas
Gostei + 0
28/10/2014
John Lima
Entidade Pessoa
@id
@GenerateValue(strategy = Generation.IDENTITY)
@Column
private Integer id;
@Column
private String nome
@OneToOne(cascade = {cascadeType.ALL},mappedBy "A")
entidade Endereco @id @Column private Integer id; @JoinColumn(name="id", refereneColumnName="id") @OneToOne private String endereco;
Pessoa p = new Pessoa();
p.setNome("Pessoa")
p.setEndereco(getEndereco());
public Endereco getEndereco{
Endereco end = new Endereco();
end.setId(p.getId());
end.setEndereco("Endereco")
return end;
}
controle.incluir(p);
quando mando incluir apresenta o erro a baixo :
ids for this class must be manually assigned before calling save().
Sei que isso tipo de erro acontece quando eu tenho uma chave onde o valor dela é informada manualmente e tento persistir com o valor nulo, porem queria que esse valor fosse atribuído de uma outra tabela.
Gostei + 0
28/10/2014
Ronaldo Lanhellas
Na sua classe Pessoa faça assim:
@Entity
public class Pessoa {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "pessoa_id")
private Integer id;
@Column
private String nome;
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Endereco endereco;
}
E na sua classe endereco:
@Entity
public class Endereco
{
@Id @Column(name="endereco_id") Integer id;
@MapsId
@OneToOne(mappedBy = "endereco")
@JoinColumn(name = "endereco_id")
private Pessoa pessoa;
}
Gostei + 0
28/10/2014
John Lima
attempted to assign id from null one-to-one property
Gostei + 0
28/10/2014
John Lima
Gostei + 0
28/10/2014
John Lima
Gostei + 0
29/10/2014
Ronaldo Lanhellas
Que bom que conseguiu. Boa sorte.
Gostei + 0
29/10/2014
John Lima
Gostei + 0
29/10/2014
Ronaldo Lanhellas
Agradeço o reconhecimento, estou a disposição sempre que tiver ao meu alcance.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)