У меня есть транзакционный метод, где объекты вставляются. Отладчик показывает, что при eventsDAO.save(..)
фактическая вставка не выполняется, а происходит только выборка последовательности. Впервые я вижу insert into events_t ..
в отладчике, когда есть ссылка на только что вставленное событие.
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = false)
public void insertEvent(..) {
EventsT eventsT = new EventsT();
// Fill it out...
EventsT savedEventsT = eventsDAO.save(eventsT); // No actual save happens here
// .. Some other HQL fetches or statements ...
// Actual Save(Insert) only happens after some actual reference to this EventsT (below)
// This is also HQL
SomeField someField = eventsDAO.findSomeAttrForEventId(savedEventsT.getId());
}
Но я также вижу, что это верно только в том случае, если все операторы HQL (не native).
Как только я помещаю Native- SQL Выберите где-нибудь перед любой реальной ссылкой на эту таблицу, , даже если она никак не касается таблицы , она вызывает немедленный грипп sh, и в этой точке я вижу на консоли утверждение insert into events_t ...
.
Если я не прикасаюсь к столу EventsT
с помощью моего родного SQL Выберите в любом случае, почему в этот момент происходит промывка?