Я проверял, как работает каскад, и столкнулся с некоторыми вещами, которые меня смущают. У меня есть две простые сущности:
@Entity
public class Child {
@Id
Long id;
@OneToOne()
@JoinColumn(name = "JOINCOLMN", referencedColumnName = "ID")
Person person;
}
@Entity
public class Person {
@Id
Long id;
@OneToOne(mappedBy = "person", cascade = CascadeType.ALL)
Child child;
}
Я проверял каскадный тип persist. Итак, я написал этот фрагмент кода:
Person person = new Person();
person.setId(100L);
person.setName("SomeName");
Child child = new Child();
child.setId(60L);
child.setPerson(person);
personRepository.save(person);
Однако, хотя оба они должны были быть настойчивыми, только человек становится настойчивым. Итак, первый вопрос:
Я немного обыскал и нашел людей, использующих менеджер сущностей Hibernate. Вот пример, где работает постоянный каскадный тип:
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Author a = new Author();
a.setFirstName(“John”);
a.setLastName(“Doe”);
Book b1 = new Book();
b1.setTitle(“John’s first book”);
a.getBooks().add(b1);
Book b2 = new Book();
b2.setTitle(“John’s second book”);
a.getBooks().add(b2);
em.persist(a);
em.getTransaction().commit();
em.close();
Мой второй вопрос:
- Я вижу, что менеджер сущностей используется для управления транзакцией и управленияюридические лица. Но я никогда не использую его, так что же происходит с моим фрагментом кода? Кто управляет транзакцией? Кто сохранил сущность?