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

John Lima

Responder

Posts

28/10/2014

Ronaldo Lanhellas

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.
Responder

Gostei + 0

28/10/2014

John Lima

rss, não tem problema Ronaldo
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.
Responder

Gostei + 0

28/10/2014

Ronaldo Lanhellas

Vamos lá ..

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;

}
Responder

Gostei + 0

28/10/2014

John Lima

apresentou a seguinte mensagem :

attempted to assign id from null one-to-one property
Responder

Gostei + 0

28/10/2014

John Lima

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
Responder

Gostei + 0

28/10/2014

John Lima

conseguir agora tiver que adicionar mais alguns paramentros .
Responder

Gostei + 0

29/10/2014

Ronaldo Lanhellas

conseguir agora tiver que adicionar mais alguns paramentros .


Que bom que conseguiu. Boa sorte.
Responder

Gostei + 0

29/10/2014

John Lima

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.
Responder

Gostei + 0

29/10/2014

Ronaldo Lanhellas

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar