Ich habe es versucht um den FlushMode auf COMMIT zu setzen, aber wann immer es außerhalb einer @Transactional-Methode geschieht, geht es zurück auf AUTO.
Ich habe versucht, den FlushMode als Umgebungsvariable festzulegen. und direkt auf dem EntityManager, aber das zeigt das gleiche Verhalten. Wann immer der FlushMode außerhalb der Transaktion gesetzt wird, hat er keine Bedeutung.
Code: Select all
entityManager.setFlushMode(FlushModeType.COMMIT);
System.out.println(entityManager.getFlushMode());
Aktualisiert: Der Code wurde außerhalb des automatischen Spülmodus beeinflusst:< /p>
Code: Select all
private void insertImageToDB(String imagePath, Map imageNameToMetaData, int numOfImages,
int currentImage) {
try {
ImageDB imageDB = new ImageDB();
imageDB.setGcsFullPath(imagePath);
imageDB.setStatus(PENDING);
setImageMetaData(imagePath, imageNameToMetaData, imageDB); //calling more setters in this method
imagesRepository.save(imageDB); //this clause causing extra persistence. I can solve it locally by removing this, but prefer to work with explicitly 'save()' action in order to under where and when I'm doing the commit.
logger.debug("processed {}/{} images", currentImage, numOfImages);
} catch (Exception e) {
logger.error("failed to save image {}", imagePath, e);
}
}