Analisando passo a passo pelo debug, o objeto arquivoImagem, está preenchido.
Mapeamento pai para filho:
@NotAudited
@OneToMany(mappedBy = "contaPagarReceber", cascade = {CascadeType.PERSIST,
CascadeType.MERGE, CascadeType.DETACH})
public Set<ContaPagarReceberArquivoImagemEntity> getContasPagarReceberArquivosImagens() {
return contasPagarReceberArquivosImagens;
}
Preeenchimento
Set<ContaPagarReceberArquivoImagemEntity> cprai = new LinkedHashSet<>();
for (ContaPagarReceberArquivoImagemEntity arqImg : entidade.getContasPagarReceberArquivosImagens()) {
aplicacaoAuditoria(arqImg);
if(entidadeGravar instanceof ContaPagarEntity){
arqImg.setContaPagarReceber((ContaPagarEntity) entidadeGravar);
} else {
arqImg.setContaPagarReceber((ContaReceberEntity) entidadeGravar);
}
arqImg.setArquivoImagem(arqImg.getArquivoImagem());
cprai.add(arqImg);
}
entidadeGravar.setContasPagarReceberArquivosImagens(cprai);
Método genérico de persist
private void persist(Object objeto) throws Exception {
EntityManager em = JPAUtility.getEntityManager();
try {
EntityTransaction et = em.getTransaction();
try {
((Session) em.getDelegate()).setDefaultReadOnly(false);
et.begin();
em.detach(objeto);
em.persist(objeto);
em.flush();
et.commit();
} catch (PersistenceException e) {
trataErrosDePersistenciaAntes(em, e);
et.rollback();
} catch (Exception e) {
et.rollback();
throw new RuntimeExceptionDao(e);
} finally {
((Session) em.getDelegate()).setDefaultReadOnly(true);
}
} finally {
em.close();
}
}
Erro:
08:26:42,119 WARN [org.hibernate.action.internal.UnresolvedEntityInsertActions] (default task-16) HHH000437: Attempting to save one or more entities that have a non-nullable association with an unsaved transient entity. The unsaved transient entity must be saved in an operation prior to saving these dependent entities.
Unsaved transient entity: ([br.eti.netsoft.erp.modelo.arquivoimagem.ArquivoImagemEntity#<null>])
Dependent entities: ([[br.eti.netsoft.erp.modelo.financeiro.ContaPagarReceberArquivoImagemEntity#511c085f-165f-4438-a3ce-e4fe1a1d3c05]])
Non-nullable association(s): ([br.eti.netsoft.erp.modelo.financeiro.ContaPagarReceberArquivoImagemEntity.arquivoImagem])
08:26:42,119 WARN [org.hibernate.action.internal.UnresolvedEntityInsertActions] (default task-16) HHH000437: Attempting to save one or more entities that have a non-nullable association with an unsaved transient entity. The unsaved transient entity must be saved in an operation prior to saving these dependent entities.
Unsaved transient entity: ([br.eti.netsoft.erp.modelo.arquivoimagem.ArquivoImagemEntity#<null>])
Dependent entities: ([[br.eti.netsoft.erp.modelo.financeiro.ContaPagarReceberArquivoImagemEntity#151decc8-73cb-4b8b-a278-35c2bfd08902]])
Non-nullable association(s): ([br.eti.netsoft.erp.modelo.financeiro.ContaPagarReceberArquivoImagemEntity.arquivoImagem])
08:26:42,120 ERROR [br.eti.netsoft.dao.GHDAO] (default task-16) Erro ao gravar objeto: br.eti.netsoft.dao.exception.RuntimeExceptionDao: java.lang.IllegalStateException: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation : br.eti.netsoft.erp.modelo.financeiro.ContaPagarReceberArquivoImagemEntity.arquivoImagem -> br.eti.netsoft.erp.modelo.arquivoimagem.ArquivoImagemEntity
O que pode ser este erro ?