Persistir dados em entidade OneToOne
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
Curtidas 0
Respostas
Ronaldo Lanhellas
28/10/2014
Sei que pode parecer um pouco chato, mas de fato não entendi o seu "Português", por gentileza ajuste o seu texto para ficar com mais nexo e tentarei lhe ajudar.
GOSTEI 0
John Lima
28/10/2014
rss, não tem problema Ronaldo
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.
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
Ronaldo Lanhellas
28/10/2014
Vamos lá ..
Na sua classe Pessoa faça assim:
E na sua classe endereco:
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
John Lima
28/10/2014
apresentou a seguinte mensagem :
attempted to assign id from null one-to-one property
attempted to assign id from null one-to-one property
GOSTEI 0
John Lima
28/10/2014
diante dessas alteraçoes consigo persistir os dados, porem quando vou na tabela de pessoa, e faço a exclusão do registro o banco faz a exclusão normalmente o que não era pra acontecer afinal o id da tabela endereço tem relação com o id da tabela pessoa
GOSTEI 0
John Lima
28/10/2014
conseguir agora tiver que adicionar mais alguns paramentros .
GOSTEI 0
Ronaldo Lanhellas
28/10/2014
conseguir agora tiver que adicionar mais alguns paramentros .
Que bom que conseguiu. Boa sorte.
GOSTEI 0
John Lima
28/10/2014
Vlw mesmo Obrigado, por me ajudar apesar da formação como não trabalho em uma empresa direcionada área de desenvolvimento ficar difícil ganha experiência, graças a devMedia e principalmente a você Ronaldo posso dizer que tenho um mentor em minha caminhada, muito obrigado.
GOSTEI 0
Ronaldo Lanhellas
28/10/2014
Vlw mesmo Obrigado, por me ajudar apesar da formação como não trabalho em uma empresa direcionada área de desenvolvimento ficar difícil ganha experiência, graças a devMedia e principalmente a você Ronaldo posso dizer que tenho um mentor em minha caminhada, muito obrigado.
Agradeço o reconhecimento, estou a disposição sempre que tiver ao meu alcance.
GOSTEI 0