Dies ist eine sehr häufige Situation, so erwarte ich eine gute Lösung. Grundsätzlich müssen wir die Zähler in unseren Tabellen aktualisieren. Als Beispiel einer Webseite besuchen:Aktualisieren von Zählern durch Hibernate
Web_Page
--------
Id
Url
Visit_Count
So in Hibernate, könnten wir diesen Code haben:
webPage.setVisitCount(webPage.getVisitCount()+1);
Das Problem dort liest in MySQL ist standardmäßig nicht aufpasst auf Transaktionen. Eine Website mit hohem Trafficking weist daher ungenaue Zählungen auf.
Die Art, wie ich zu tun, diese Art der Sache bin es gewöhnt ist einfach anrufen:
update Web_Page set Visit_Count=Visit_Count+1 where Id=12345;
Ich denke, meine Frage ist, wie mache ich das in den Ruhezustand? Und zweitens, wie kann ich ein solches Update in Hibernate machen, das ein bisschen komplexer ist?
update Web_Page wp set wp.Visit_Count=(select stats.Visits from Statistics stats where stats.Web_Page_Id=wp.Id) + 1 where Id=12345;
Danke Pascal. Ich wusste nicht, dass ich UPDATE innerhalb von HQL machen könnte. Sieht einfach aus. Aber würde das, was mein komplexeres Beispiel betrifft, demselben SELECT-Problem zum Opfer fallen, wenn ich Transaktionen nicht beachten würde? Wie schlägst du vor, dass ich damit umgehe? –