У меня возникла проблема при попытке сохранить список из 21 300 объектов, однако в базе данных только [SELECT COUNT (id) =] 10,506 сохраняются.
Вывод консоли показывает, что размер списка, готового к сохранению, является правильным, поэтому код является «правильным».Если я сделаю цикл только один раз, например, с freq == 30, это будет нормально работать, поэтому он кажется каким-то образом связанным с циклом for для каждого цикла, когда он повторяется несколько раз.Недостающие сущности несколько рассеяны среди населения.
Есть идеи, почему именно это поведение?
public void loadTickAll(int conid) {
System.out.println(">>>> MERGING <<<<<< Querying ticks for " + conid);
List<CandleTick> candlesHisto = histoCandleTickRepo.findByConidAll(conid, LocalDate.parse("2016-11-01"));
List<CandleTick> candlesLive = new ArrayList<>();
List<CandleTick> candles = Stream.of(candlesHisto, candlesLive).flatMap(Collection::stream)
.collect(Collectors.toList());
freqList.forEach((freq) -> {
if(freq>=30) {
System.out.println("Working on freq " + freq);
FlowMerger flowMerger = new FlowMerger(freq, contracts.get(conid));
List<CandleMerge> flow = flowMerger.createFlow(new ArrayList<>(candles));
Collections.reverse(flow);
System.out.println("Start saving " + freq + " - " + flow.size());
histoCandleMergeRepo.saveAll(flow);
System.out.println(freq + "/" + conid + " has been delivered and saved");
}
});
}
Вывод на консоль
>>>> MERGING <<<<<< Querying ticks for 5
Working on freq 30
Start saving 30 - 21300
30/5 has been delivered and saved
application.properties
# jdbc.X
jdbc.driverClassName=org.postgresql.Driver
histo.jdbc.url=jdbc:postgresql://localhost:5432/trading2018
live.jdbc.url=jdbc:postgresql://localhost:5433/trading2018
jdbc.user=...
jdbc.pass=...
## hibernate.X
hibernate.default_schema=trading
hibernate.jdbc.lob.non_contextual_creation=true
hibernate.show_sql=false
hibernate.temp.use_jdbc_metadata_defaults=false
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.hbm2ddl.auto=validate
#hibernate.cache.use_second_level_cache=false
#hibernate.cache.use_query_cache=false
logging.level.org.springframework.web=ERROR
logging.level.com=DEBUG
logging.file=C:/tmp/application.log