テーブルIDに GenerationType.IDENTITY または GenerationType.AUTO を使用していて、トランザクション内のエンティティを永続化すると、データが即座に挿入され、トランザクションが終了する前に!!!
GenerationType.TABLE を変更して、MYSQL データベースで新しい関連付けられた DDL を生成して実行しようとしましたが、現在は機能しています。誰かが私に理由を説明できますか?
エキス:
@Table
@Entity
public class Foo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, unique = true)
private Long id;
...
}
@Repository
public class EntityDaoServiceImpl {
@PersistenceContext
protected EntityManager em;
@Transactional
public void testFooCreation() {
Foo foo = new Foo();
em.persit(foo);
//at this point with the AUTO or IDENTITY strategie,
//i ve got an effective insert in base otherwise with the TABLE strategie,
//the insert is effective at the end of my transaction (the excepted behavior)
}
}