当我这样做时:
isNew
执行第二行后,我可以看到跟踪中的SQL插入和插入的DB中的一行。但是当我这样做时:
em.persist(entity);
em.getTransaction().commit();
在这种情况下,我可以在执行第二行后看到跟踪中的SQL插入,但是在DB中没有插入新行。只有在第三行执行后才会发生这种情况。
一旦INSERT被触发,INSERT是否应该立即在DB中放入一行?
答案 0 :(得分:2)
是和否。您的语句在事务中完成,该事务应该与事务提交之前的任何其他会话隔离。事务提交后,所有修改都应对其他会话可见。