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 Ae B(em um relacionamento um-para-um, mas não imposto ou modelado por JPA). Apossui um PK composto, que é definido manualmente, e também possui um campo IDENTITY gerado automaticamente recordId. Isso recordIddeve ser gravado na entidade Bcomo uma chave estrangeira para A. Estou economizando Ae Bem uma única transação. O problema é que o valor gerado automaticamente A.recordIdnã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?