Почему @Scheduled метод не держит hibernate сессию?
Всем привет Суть в следующем, у меня есть вот такой метод:
@Scheduled(cron = "0/30 0/1 * * * ?")
@Transactional
public void executeScheduledTask() {
System.out.println("Задача началась в " + LocalDateTime.now());
Customer customer = customerService.getCustomers();
log.info(customer.toString());
System.out.println("Задача завершилась в " + LocalDateTime.now());
}
Класс Customer:
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@Builder
@Entity
@Table(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
@JoinTable(name = "purchase",
joinColumns = @JoinColumn(name = "customer_id"),
inverseJoinColumns = @JoinColumn(name = "purchase_id"))
private List<Purchase> purchase;
}
При попытке выполнить метод executeScheduledTask() без аннотации @Transactional ловлю ошибку:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ru.example.scheduler.model.Customer.purchase, could not initialize proxy - no Session
Хотелось бы понять, почему возникает данная ошибка, ведь время между вызовами методами полторы минуты, этого времени 100% хватит, чтобы сходить в базу. + Почему тогда такой ошибки не возникает во время выполнения веб запроса, при работе с контроллерами ?
Вариант использовать EAGER не предлагать, мне нужно разобраться, почему именно так не работает
Спасибо