У меня есть ситуация, когда инфраструктура jpa неявно сохраняет новую сущность из-за аннотации CascadeType.PERSIST
.
Например, ситуация выглядит следующим образом
Parent parent = new Parent();
entityManager.persist(parent);
Child child = new Child();
parent.setChild(child); // attribute is annotaded @ManyToOne(cascade = CascadeType.PERSIST)
Будет это имеет значение, если я явно сохраняюсь, дополнительно (то есть entityManager.persist(child);
)?
Есть ли лучшие рекомендации по добавлению этой строки?
Замечание: Я заметил, что, по крайней мере, в OpenJPA, новая сущность не будет немедленно помещена в контекст постоянства, т.е. в приведенном выше примере (без entityManager.persist(child)
) мы имеем следующее поведение:
System.out.println(entityManager.contains(child)); // -> false
entityManager.flush();
System.out.println(entityManager.contains(child)); // -> true