Я создаю информационную панель команды с совпадениями из CSV-файла. Я создаю две сущности — матч и команду. Я использую Spring Batch для загрузки совпадений в postgre, и он загружается нормально. Я могу проверить завершение загрузки данных, запросив базу данных Postgre. После завершения пакетного задания я хотел бы выполнить несколько запросов для агрегирования данных, для которых я использую EntityManager. Когда я сохраняю EntityManager, я не вижу никаких данных в базе данных и не вижу никаких ошибок. Я попытался вывести данные, хранящиеся в hashMap, и вижу данные, которые я хотел бы сохранить в таблице Team базы данных. Что может быть не так в моей настойчивости?
import com.project.dashboard.model.Team;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class JobCompletionNotificationListener implements JobExecutionListener {
private static final Logger log = LoggerFactory.getLogger(JobCompletionNotificationListener.class);
@PersistenceContext
private final EntityManager em;
@Autowired
public JobCompletionNotificationListener(EntityManager em) {
this.em = em;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
log.info("!!! JOB FINISHED! Time to verify the results");
Map teamData = new HashMap();
em.createQuery("select m.team1, count(*) from Match m group by m.team1", Object[].class)
.getResultList()
.stream()
.map(e -> new Team((String) e[0], (long) e[1]))
.forEach(team -> teamData.put(team.getTeamName(), team));
em.createQuery("select m.team2, count(*) from Match m group by m.team2", Object[].class)
.getResultList()
.forEach(e -> {
Team team = teamData.get((String) e[0]);
team.setTotalMatches(team.getTotalMatches() + (long) e[1]);
});
em.createQuery("select m.winner, count(*) from Match m group by m.winner", Object[].class)
.getResultList()
.forEach(e -> {
Team team = teamData.get((String) e[0]);
if(team!=null)
{
team.setTotalWins((team.getTotalWins() + (long) e[1]));
}
});
teamData.values().forEach(em::persist);
teamData.values().forEach(System.out::println);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... t-any-data
EntityManager persist не сохраняет никаких данных ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1727295826
Anonymous
Я создаю информационную панель команды с совпадениями из CSV-файла. Я создаю две сущности — матч и команду. Я использую Spring Batch для загрузки совпадений в postgre, и он загружается нормально. Я могу проверить завершение загрузки данных, запросив базу данных Postgre. После завершения пакетного задания я хотел бы выполнить несколько запросов для агрегирования данных, для которых я использую EntityManager. Когда я сохраняю EntityManager, я не вижу никаких данных в базе данных и не вижу никаких ошибок. Я попытался вывести данные, хранящиеся в hashMap, и вижу данные, которые я хотел бы сохранить в таблице Team базы данных. Что может быть не так в моей настойчивости?
import com.project.dashboard.model.Team;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class JobCompletionNotificationListener implements JobExecutionListener {
private static final Logger log = LoggerFactory.getLogger(JobCompletionNotificationListener.class);
@PersistenceContext
private final EntityManager em;
@Autowired
public JobCompletionNotificationListener(EntityManager em) {
this.em = em;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
log.info("!!! JOB FINISHED! Time to verify the results");
Map teamData = new HashMap();
em.createQuery("select m.team1, count(*) from Match m group by m.team1", Object[].class)
.getResultList()
.stream()
.map(e -> new Team((String) e[0], (long) e[1]))
.forEach(team -> teamData.put(team.getTeamName(), team));
em.createQuery("select m.team2, count(*) from Match m group by m.team2", Object[].class)
.getResultList()
.forEach(e -> {
Team team = teamData.get((String) e[0]);
team.setTotalMatches(team.getTotalMatches() + (long) e[1]);
});
em.createQuery("select m.winner, count(*) from Match m group by m.winner", Object[].class)
.getResultList()
.forEach(e -> {
Team team = teamData.get((String) e[0]);
if(team!=null)
{
team.setTotalWins((team.getTotalWins() + (long) e[1]));
}
});
teamData.values().forEach(em::persist);
teamData.values().forEach(System.out::println);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79023790/entitymanager-persist-does-not-persist-any-data[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия