Frage

Ich verwende Spring MVC 3.0 mit Eclipse und JPA und ich erlebe folgendes Problem: Ich habe dieses Feld in meiner App:

@OneToMany(mappedBy = "stadium")
private Set<FootballMatch> footballMatches = new HashSet<FootballMatch>();

Wenn es eine Aktion ausgelöst, die neuen Objekte in Satz über Set.add() fügt, werden die Änderungen zeigen, nicht im Browser auf, althought gibt es neue Zeilen in der Datenbank. Wenn ich die Browser-Cache löschen, passiert nichts. Ich habe entdeckt, dass eine Art und Weise, wie Last neue Werte zu zwingen, ist die App auch ohne Änderung der einzelnen Zeile erneut bereitstellen. So ist die App zurückkehrt alte Werte, Caching es irgendwo. Wie erzwinge ich es Last Allways aktualisierten Werte? Ich war so etwas wie getLastModified() denken, aber ich weiß nicht, wo soll ich es umsetzen.

War es hilfreich?

Lösung

Da es eine bidirektionale Beziehung ist, stellen Sie sicher, dass Sie beiden Seiten der Beziehung setzen.

See, http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption. 2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

Sie auch sicher, Sie ändern, Verschmelzung, die richtigen Objekte zu begehen.

Versuchen Sie es mit EntityManager.refresh (), um das Objekt zu aktualisieren, haben Sie die aktualisierten Werte erhalten? Wenn Sie nicht, dann Ihre Datenbank die Daten nicht haben.

Cachen Sie die EntityManager in Ihrer Anwendung? Wenn Sie eine alte EntityManager haben um es keine neue Änderungen sehen. Normalerweise sollte ein neues EntityManager für jede Anforderung / Transaktion erstellt werden.

Eclipse eine Objekt-Cache standardmäßig hält, kann diese deaktiviert sein, um die persistence.xml Eigenschaft verwendet, "Eclipselink.caching.shared" = "false"

See, http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top