Проблема с весенней загрузкой + сериализуемая транзакция - PullRequest
0 голосов
/ 09 марта 2019

Здравствуйте! У меня проблема с транзакциями в Java + Spring.В основном проблема заключается в том, что когда я тестировал параллельные сообщения в своем приложении, я вставляю более одной строки (иногда), а иногда получаю эту ошибку:

2019-03-0913: 30: 23.096 ПРЕДУПРЕЖДЕНИЕ 20820 --- [nio-8080-exec-7] ohengine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 0, SQLState: ноль 2019-03-09 13: 30: 23.096 ПРЕДУПРЕЖДЕНИЕ 20820 ---[nio-8080-exec-9] ohengine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 0, SQLState: пусто 2019-03-09 13: 30: 23.096 ОШИБКА 20820 --- [nio-8080-exec-7] ohengine.jdbc.spi.SqlExceptionHelper: HikariPool-1 - Соединение недоступно, время запроса истекло после 30004 мс.2019-03-09 13: 30: 23.096 ОШИБКА 20820 --- [nio-8080-exec-9] ohengine.jdbc.spi.SqlExceptionHelper: HikariPool-1 - соединение недоступно, время запроса истекло после 30004 мс.2019-03-09 13: 30: 23.096 ПРЕДУПРЕЖДЕНИЕ 20820 --- [nio-8080-exec-5] ohengine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 0, SQLState: null ....

Мой метод очень прост:

@Transactional(isolation = Isolation.SERIALIZABLE)
public SeatReservation saveOrException(SeatReservation entity) {
    if (!seatReservationDao.existsByUuid(uuid)) {
        entity.setUuid(uuid);
        return seatReservationDao.save(entity);
    }
    return null;
}

Я знаю, что есть другие способы сделать это, но я пытаюсь понять, почему, если я использую Isolation.SERIALIZABLE, это не исключает одну транзакцию

Это журнал:

Hibernate: выберите seatreserv0_.id как col_0_0_ из резервации seatreserv0_, где seatreserv0_.uuid =?предел?

Hibernate: выберите seatreserv0_.id как col_0_0_ из резервации seatreserv0_, где seatreserv0_.uuid =?предел?

1018 * Hibernate: выберите seatreserv0_.id в id1_0_0_, seatreserv0_.arrival в arrival2_0_0_, seatreserv0_.departure как departur3_0_0_, seatreserv0_.email как email4_0_0_, seatreserv0_.last_name как last_nam5_0_0_, seatreserv0_.name как name6_0_0_, seatreserv0_.uuid в uuid7_0_0_из резервации seatreserv0_ где seatreserv0_.id =?
1020 * Hibernate: выберите seatreserv0_.id в id1_0_0_, seatreserv0_.arrival в arrival2_0_0_, seatreserv0_.departure как departur3_0_0_, seatreserv0_.email как email4_0_0_, seatreserv0_.last_name как last_nam5_0_0_, seatreserv0_.name как name6_0_0_, seatreserv0_.uuid в uuid7_0_0_из резервации seatreserv0_ где seatreserv0_.id =?

Это исключает все чтения, а затем все сохраняет.Странно

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...