Pessoal, tenho uma entidade Empresa que possui uma entidade contrato, que por sua vez possui um anexo.
seguem os mapeamentos:
public class Empresa implements Serializable {
@OneToOne(mappedBy = "empresa", cascade = CascadeType.ALL)
private Contrato contrato;
}
public class Contrato implements Serializable {
@OneToOne(mappedBy = "contrato", cascade = CascadeType.ALL)
private Anexo anexo;
@OneToOne(optional = false)
@JoinColumn(name = "ID_EMPRESA", unique = true)
private Empresa empresa;
}
public class Anexo implements Serializable {
@OneToOne
@JoinColumn(name = "ID_CONTRATO")
private Contrato contrato;
}
como podem observar utilizo do atributo cascade = CascadeType.ALL.
quando faço
getEm().persist(empresa);
empresa.getContrato.getAnexo().getId();
a empresa é salva, logo o contrato tambem e consequentemente o anexo e é exibido o id do anexo.
porém quando executo a operação de update na empresa meu obtenho uma NullPointerException na linha que chama o id do anexo.
getEm().merge(empresa);
empresa.getContrato.getAnexo().getId(); // exceção
alguem sabe pq o comportamento nao esta sendo o mesmo para o metodo persist uma vez que utilizo CascadeType.ALL?
abrasssssssssssssssssss