2016-04-18 5 views

Antwort

1

Wenn Sie mich fragen: keine solche Abfragen verwenden. Das liegt daran, dass Ihr Second-Level-Cache ausgelöscht wird und Sie Leistungsprobleme bekommen (Ihre Anwendung wird etwas langsamer). Folgendes ist

Und übrigens der Prozess, den Sie in der Realität zu tun:

  • Sie laden Ihre Einheit aus der Datenbank
  • ändert das Attribut auf dem geladenen Objekt (über eine Set-Methode)
  • Sie speichern Sie Ihre Einheit in die Datenbank (dies automatisch erfolgt, wenn Sie Ihre Transaktion endet, so brauchen Sie nicht PartnerRepository.save(entity) explizit zu nennen)

Wenn Sie möchten, eine Abfrage zu verwenden, dann empfehle ich Ihnen Ihre Frage schreiben, wie Sie in Ihrer Frage erwähnt:

@Modifying 
@Query("update Person p set p.age = :age where p.name = :name") 
int setAgeByName(@Param("age") int age, @Param("name") String name); 

Und Sie wieder, wie viele Einträge geändert wurden.

+0

Was passiert, wenn ich ein einzelnes Attribut für einen großen Satz von Einträgen festlegen muss? Ich müsste dann die vollständigen Entitäten abrufen und die Eigenschaft innerhalb der Transaktion festlegen. Aber ich möchte den Abruf aller Daten vermeiden. – membersound

Verwandte Themen