Когда я создаю новый EntityManager для получения версии базы данных сущностей, метод find () получает случайный результат при каждом вызове, список (элементы) случайным образом пуст, даже если я использую Hibernate.initialize.Служба запускается весенним пакетом с помощью @Transactional (транзакция = Менеджер транзакций, распространение = распространение.REQUIRES_NEW).
Это мой код:
@Entity
@Table(name = "activity")
public class Activity {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "activity_detail", joinColumns = @JoinColumn(name = "activity_detail_id"), inverseJoinColumns = @JoinColumn(name = "item_id"))
private final List<Item> items = new ArrayList<>();
}
В моем сервисе:
public boolean needUpdate(Activity entity) {
boolean needed;
EntityManager entityManager = emFactory.createEntityManager();
@SuppressWarnings("unchecked")
Activity dbEntityVersionLazy = entityManager.find(entity.getClass(), entity.getId());
Activity dbEntityVersion = EntityHelper.initializeAndUnproxy(dbEntityVersionLazy);
needed = !entity.equals(dbEntityVersion);
entityManager.close();
return needed;
}
Может кто-нибудь объяснить, в чем проблема?