PersistentObjectException: detached entity passed to persist

In meine app, die ich bin verbunden, um eine websocket.
Der socket sendet JSON-Daten. So ist es immer verfügbar sein, verarbeite ich es in einem anderen Job. In jedem job, den ich konvertieren der JSON um ein Modell-Objekt mit GSON. Es gibt 3 Arten von Modellen, die alle unabhängig und mit einem gemeinsamen Zeitstempel-Feld in einer MappedSuperclass. Sie nicht über eine id-explicit-Feld. Ich nenne speichern auf dem Modell und in 1 von 1000 mal "PersistentObjectException: detached entity passed to persist" geworfen wird.

Die mehrere jobs aufgerufen werden, von einem start-up Job, die Verbindung zum websocket. Die Bibliothek, die ich verwende, schafft einen anderen thread für jede eingehende Nachricht. Ich habe dann konvertieren Sie den thread in einen job vor dem speichern in der Datenbank. Ich Tue dies, weil sonst ein anderer PersistentObjectException geworfen wird, über das ändern der id von 1 auf 2 oder etwas ähnliches, wenn ich den original-thread zu nennen, speichern.

Ich habe auch einen anderen job ausführen, der auf die Datenbank zugreift, zur gleichen Zeit. Was könnte falsch sein?

@Override
public void onMessage(final WebSocketMessage message){
        new Job() {
            @Override
            public void doJob() {
                processMessage(message.getText());
            }
        }.now();

}

 public void processMessage(String message) {
        Appointment appointment = new Gson().fromJson(message, Appointment.class);
        appointment.save();
 }

 @Entity
 public class Appointment extends CalendarEvent {
       private String owner;
 }

 @MappedSuperclass
 public abstract class CalendarEvent extends Model {
       private long timestamp;
 }

EDIT: einige zusätzliche code-Beispiel

Wie ermitteln Sie die Modell-Objekte? Ist es möglich, dass der Wert wird in der @Id-Feld ist nicht eindeutig?
Jede Model-Klasse hat ein Feld id, das ist null. Meine Model-Klassen erweitern. Sie deklarieren Sie nicht ein id-Feld per se.
Btw, ich don ' T wirklich verstehen, die Bedeutung dieser Nachricht. Was bedeutet "detached entity passed to persist" mean in English? (Ich bin kein native speaker)

InformationsquelleAutor siamii | 2011-10-05

Schreibe einen Kommentar