Eu estava coletando informações sobre o método flush (), mas não estou muito claro quando usá-lo e como usá-lo corretamente. Pelo que li, meu entendimento é que o conteúdo do contexto de persistência será sincronizado com o banco de dados, ou seja, a emissão de declarações pendentes ou atualização de dados da entidade.
Agora peguei o seguinte cenário com duas entidades A
e B
(em um relacionamento um-para-um, mas não imposto ou modelado por JPA). A
possui um PK composto, que é definido manualmente, e também possui um campo IDENTITY gerado automaticamente recordId
. Isso recordId
deve ser gravado na entidade B
como uma chave estrangeira para A
. Estou economizando A
e B
em uma única transação. O problema é que o valor gerado automaticamente A.recordId
não está disponível dentro da transação, a menos que eu fazer uma chamada explícita de em.flush()
depois de chamar em.persist()
on A
. (Se eu tiver um IDENTITY PK gerado automaticamente, o valor será atualizado diretamente na entidade, mas esse não é o caso aqui.)
Pode em.flush()
causar algum dano ao usá-lo em uma transação?