Я хочу по-настоящему простое требование отправить массовое сообщение брокеру сообщений. Для этого кто-то нажимает на URL, а затем система Asy c начинает отправлять сообщения. Но когда система начинает сборку DTO из объекта Entity, она отправляет несколько сообщений и после запуска выдает исключение GenericJDBCException. Это выглядит как проблема параллелизма из-за прерванной транзакции. Но все это всего лишь операция чтения с использованием представления. За весь этот процесс не происходит ни одной записи. здесь код
.
@Transactional
public void bullMessage(){
getPersonList();
}
public List<PersonDTO> getPersonList(){
try (Stream<Person> persons = perservice.getStream()) {
try {
persons.forEach(pers -> {
try {
prepareDTO(jobDomain);
} catch (JsonProcessingException | NullPointerException exception) {
// Does not stop on exception
// keep emitting event for other records
return;
} catch (Exception exception) {
log.error("Failed to convert");
return;
}
});
} catch (PersistenceException ex) {
log.error("Error on loading entity = [{}]", ex);
}
}
}
public PersonDTO prepareDTO(jobDomain){
another service call 1
another service call 2
return pers;
}
, как можно видеть, метод bullMessage является транзакционным, который все метод getPersonList. этот метод извлекает список сущностей Person и затем начинает преобразование в DTO.
Чтобы преобразовать DTO, нет никаких услуг, которые входят в картину. Теперь после нескольких итераций он начинает выдавать исключение, вот код.
org.hibernate.exception.GenericJDBCException: could not extract ResultSet
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) ~[hibernate-core-5.1.0.Final.jar:5.1.0.Final]
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:434)
Может ли кто-нибудь помочь в этом, так как я мало что знаю об этом.