Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

mapeamento da pagina inicial, mas fica NULL

Ola Turminha, Ola Professores boa tarde! Por que mesmo criado a relação entre as tabelas? O ID da tabela que tem OneToMany não preenche automaticamente na tabela ManyToOne quando eu abasteço a tabela que tem ManyToOne, ela não deveria aparecer AUTOMATICAMENTE o id da tabela OneToMany?? Pois não deveria?? Ela aparece como NULL.. O campo é criado, mas todos os itens deste campo fica NULL, ja dei um DROP no banco e adcionei tudo novo, alimentando a tabela OneToMany primeiro, para que crie os IDs, e só depois abastecer as tabelas que em ManyToOne .

  //na tabela  CursoAtec
    @OneToMany(mappedBy = "cursoatec")
    private List<Ciber> ciber = new ArrayList<>();

// na tabela CIBER, aqui nesta tabela, quando adciono 1 item no campo cursoatec_id fica como NULL, não deveria receber o ID do CursoAtec referente ao CIBER?
    @ManyToOne
    private CursoAtec cursoatec;

Obrigaduuuu pelo Help

4 respostas

Oi Antonio,

Nesse caso é um relacionamento Bidirecional, sendo que você vai precisar preencher os 2 lados do relacionamento no seu código. Algo como:

cursoAtec.getCiber().add(ciber);
ciber.setCursoAtec(cursoAtec);

E também é interessante adicionar o atributo cascade no @OneToMany, para a JPA fazer automaticamente o insert do ciber quando você salvar o cursoAtec:

@OneToMany(mappedBy = "cursoatec", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Ciber> ciber = new ArrayList<>();

Bons estudos!

Obrigado Rodrigo bom dia , eu fiz isto que vc postou, mas a tabela que tem o @ManyToOne não deveria ter para cada item criado o ID preenchido automaticamente da tabela @OneToMany?? A tabela que tem @ManyToOne cria o campo do ID do tabela @OneToMany, mas ficam vazios "NULL"; como faria para ter este ID da @OneToMany, preenchido automaticamente para cada item cadastrado no na tabela ManyToOne??

solução!

Antonio,

Vou usar um outro exemplo para explicar a ideia do relacionamento ManyToOne / OneToMany.

Suponha que temos as entidades Pessoa e Endereco:

@Entity
public class Pessoa {

    @Id @GeneratedValue
    private Long id;

    private String nome;

    private String cpf;

    @OneToMany(mappedBy = "morador")
    private List<Endereco> enderecos = new ArrayList<>();

}
@Entity
public class Endereco {

    @Id @GeneratedValue
    private Long id;

    private String logradouro;

    private String cep;

    @ManyToOne
    private Pessoa morador;

}

No banco de dados a estrutura das tabelas será a seguinte:

-----Tabela: Endereco-----
id: bigint
logradouro: varchar
cep: varchar
morador_id: bigint
-----------------------
-----Tabela: Pessoa-----
id: bigint
nome: varchar
cpf: varchar
-----------------------

Repare que na tabela Pessoa não tem nenhuma coluna que liga com a tabela Endereco, apenas na tabela Endereco que tem o id da pessoa.

Se você tiver um código para salvar uma pessoa e endereco no banco de dados:

Pessoa joao = new Pessoa();
joao.setNome("Joao da silva");
joao.setCpf("12345678900");

Endereco casa = new Endereco();
casa.setLogradouro("Rua da minha casa");
casa.setCep("12345678");

joao.getEnderecos().add(casa);
casa.setMorador(joao);

pessoaRepository.save(joao);
enderecoRepository.save(casa);

E agora no banco de dados teremos os seguintes registros:

-----Tabela: Pessoa-----
id | nome | cpf |

1  | Joao da silva | 12345678900

-----------------------
-----Tabela: Endereco-----
id | logradouro | cep | morador_id

1  | Rua da minha casa | 12345678 | 1

-----------------------

Esse é o funcionamento da JPA em casos de relacionamentos ManyToOne/OneToMany.

Rodrigo muito obrigado, vou refazer todo o curso creio que vou aprender mais.