flush () 메소드에 대한 정보를 수집하고 있었지만 언제 사용하고 올바르게 사용하는지 명확하지 않습니다. 내가 읽은 바에 따르면 지속성 컨텍스트의 내용이 데이터베이스와 동기화 될 것임을 이해했습니다. 즉, 미해결 문을 발행하거나 엔티티 데이터를 새로 고칩니다.
이제 두 개의 엔터티 A
와 B
(일대일 관계이지만 JPA에 의해 적용되거나 모델링되지 않은) 다음 시나리오가 있습니다. A
수동으로 설정되고 자동 생성 된 IDENTITY 필드도있는 복합 PK가 있습니다 recordId
. 이것은 recordId
엔티티 B
에 대한 외래 키로 작성되어야합니다 A
. 저는 저축 A
하고 B
있으며 단일 거래입니다. 문제 A.recordId
는를 호출 한 em.flush()
후 명시 적으로 호출하지 않는 한 트랜잭션 내 에서 자동 생성 된 값을 사용할 수 없다는 것 em.persist()
입니다 A
. (자동 생성 된 IDENTITY PK가있는 경우 값이 엔티티에서 직접 업데이트되지만 여기서는 그렇지 않습니다.)
em.flush()
거래 내에서 사용할 때 해를 끼칠 수 있습니까 ?