OptimisticLockException mit Ebean/Spielen

Habe ich ein Spiel 2.1.3 Java-app mit Ebean. Ich bin immer der OptimisticLockException unten.

[OptimisticLockException: Data has changed. updated [0] rows sql[update person 
set name=? where id=? and email=? and name=? and password is null and created=? 
and deleted is null] bind[null]]

Ich verstehe, dass er versucht, mir zu sagen, der Datensatz geändert hat zwischen, wenn ich es lese und wenn ich versuchte, es zu schreiben. Aber die einzige Veränderung, die geschieht in dieser Methode.

public void updateFromForm(Map<String, String[]> form) throws Exception {
    this.name = form.get("name")[0];

    String password = form.get("password")[0];
    if (password != null && password.length() != 0) {
        String hash = Password.getSaltedHash(password);
        this.password = hash;
    }

    this.update();
}

Mache ich das falsch? Ich sah eine ähnliche Logik in zentasks. Auch, sollte ich in der Lage sein zu sehen, die die Werte der bind-Variablen?

UPDATE: ich rufe updateFromForm() innerhalb des Controllers:

@RequiresAuthentication(clientName = "FormClient")
public static Result updateProfile() throws Exception {

    final CommonProfile profile = getUserProfile();
    String email = getEmail(profile);           
    Person p = Person.find.where().eq("email", email).findList().get(0);

    Map<String, String[]> form = request().body().asFormUrlEncoded();

    if (p == null) {
        Person.createFromForm(form);
    } else {
        p.updateFromForm(form);
    }

    return ok("HI");
}
  • Könnte man auch die Methode, wobei Sie aufrufen updateFromForm?
  • Ok, ich aktualisiert. Ich nenne updateFromForm() in einem controller. updateFromForm selbst definiert ist, in einem Modell. Weißt du, - soll ich die Werte für die bind-Variablen in meiner Fehlermeldung oder nicht? Vielen Dank für jede Hilfe.
InformationsquelleAutor latj | 2013-12-02
Schreibe einen Kommentar