Konfiguration des Ruhezustands-Spülmodus
Posted: 03 Jan 2025, 17:10
Bei Verwendung von Spring 3.2.1 habe ich festgestellt, dass die Standardeinstellung „flushModeType = Auto“ Probleme verursacht, da ich versuche, an dem Objekt zu arbeiten, bevor ich es beibehalte.
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.
gibt „AUTO“ aus
Aktualisiert: Der Code wurde außerhalb des automatischen Spülmodus beeinflusst:< /p>
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);
}
}