не сохраняется в бд?
В каком смысле сразу?
Представь, что у меня пустая база данных и в переменной kudaGoEvents лежит примерно 600 событий, которые мне нужно положить в бд. У этих событий могут быть одинаковые адреса (eventAddress). Я захожу в foreach и в первой итерации сохраняю событие с адресом в бд (Event save = eventRepository.saveAndFlush(newEventFromKudaGo);) Так вот на следующей итерации я хочу проверить, что в бд уже не лежит нужный мне адрес стр. 13 (eventAddress = eventAddressRepository.findByEventLatitudeAndEventLongitude() но сделать я этого не могу, т.к. в бд на этот момент еще ничего нет, вот это мне и не понятно, ведь я уже сохранил по крайней мере одну запись Предполагаю, что это как-то связано с тем. что hibernate где-то под капотом хранит данные и сохраняет их пачкой, и из-за отсутсвия опыта я пока не понял, как это обойти
А у тебя в репозиторий точно вызывается flush у entitymanager ?
Не я ведь делаю его реализацию, это обычный JpaRepository и если я правильно понимаю, то метод saveAndFlush для того и сделан, чтобы сразу скидывать данные в бд
Кратко если у тебя в коде обернуто все аннотацией transactional то все отправится одним запросом
Оно не сохранилось потому что все в одной транзакции и сохранится только в конце этого метода, тебе нужно отделить логику в разные сервисы и методы так чтобы можно было делать разные операции в разных транзакциях, насколько я понял
Спасибо, я так и подозревал )) Сейчас попробую все разделить
Обсуждают сегодня