| select on NativeQuery trigger full flush immediately as the document says. the code is : PersonEntity perosn1 = new PersonEntity(1, "person1"); entityManager.persist(perosn1); entityManager.remove(perosn1); AddressEntity addressEntity = new AddressEntity(1, "address1"); entityManager.persist(addressEntity); entityManager.remove(addressEntity); System.out.println("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF->1"); assertTrue(((Number)entityManager.createNativeQuery("select count from hibernate_test_person_entity").getSingleResult()).intValue() == 0); // entityManager.createNativeQuery("delete from hibernate_test_person_entity where id = 1").executeUpdate(); assertNull(entityManager.find(PersonEntity.class, 3721)); the output is: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF->1 Hibernate: insert into hibernate_test_person_entity (name, id) values (?, ?) Hibernate: insert into hibernate_test_addres_entity (address, id) values (?, ?) Hibernate: delete from hibernate_test_person_entity where id=? Hibernate: delete from hibernate_test_addres_entity where id=? Hibernate: select count from hibernate_test_person_entity Hibernate: select personenti0_.id as id1_1_0_, personenti0_.name as name2_1_0_ from hibernate_test_person_entity personenti0_ where personenti0_.id=? |