Я всегда думал, что сущности, полученные до транзакции (до entityManager.getTransaction().begin()
), были отделены от контекста персистентности (при использовании того же менеджера сущностей для извлечения сущностей для обработки транзакции). Фактически, каждый раз, когда я управлял транзакциями, мне приходилось явно объединять объекты, которые были выведены за его пределы. Если бы я этого не сделал, обновления не отражались в базе данных.Являются ли сущности, получаемые за пределами транзакции, управляемой или отстраненной?
Но недавно у меня была дискуссия с коллегой, который испытал эту ситуацию обратным образом. Он должен был явно отключить все сущности, полученные до транзакции, чтобы избежать обновления базы данных.
Единственная разница между нашими кодами в том, что мой persistence.xml
файл имеет версию 2.0, а его версия 1.0. Но он использует JPA 2.1 в своем коде. Это причина этого странного поведения или есть что-то, чего я здесь не хватает?
Мы используем Hibernate как реализацию.
Они будут управляться. – Antoniossss
какая реализация вы используете? –