Objectify nie przechowuje synchronicznie, nawet teraz

Mój serwlet powinien wykonywać następujące czynności: gdy użytkownik rejestruje się w miejscu, sprawdzam, czy jest on aktualnie zarejestrowany gdzieś (nawet jeśli jest to to samo miejsce), jeśli tak, wyrejestruj go i ponownie zarejestruj.

Mam następujący kod, który uprościłem, aby pokazać mój problem:

    Date tempDate = new Date();


    Visit v = ofy().load().type(Visit.class)
            .filter(Visit.USER_ID, 5L)
            .filter(Visit.EXIT_DATE, null).first().get();

    if(v != null)
        exitVenue(5L, 7L, tempDate);

    Visit visit = new Visit(5L, 7L, tempDate);      
    ofy().save().entity(visit).now();

    Date tempDate2 = new Date();


    Visit v2 = ofy().load().type(Visit.class)
            .filter(Visit.USER_ID, 5L)
            .filter(Visit.EXIT_DATE, null).first().get();

    if(v2 != null)
        exitVenue(5L, 7L, tempDate2);

    Visit visit2 = new Visit(5L, 7L, tempDate2);        
    ofy().save().entity(visit2).now();
}


public void exitVenue(Long userID, Long venueID, Date exitDate) {

    Visit visit = ofy().load().type(Visit.class)
            .filter(Visit.USER_ID, userID)
            .filter(Visit.VENUE_ID, venueID)
            .filter(Visit.EXIT_DATE, null).first().get();

    if(visit == null){
        log.info("ERROR : User " + userID + " exited venue " + venueID + ", but Visit was not found");
        return;
    }
    visit.setExitDate(exitDate);

    ofy().save().entity(visit).now();
}

Problem polega na tym, że gdy wykonuję tę operację po raz drugi, nie zawsze stwierdza się, że już istnieje wizyta w magazynie danych (co drugi test lub tak). I jestem zdezorientowany, czy „teraz ()” nie chce od razu go przechowywać, a dopiero potem kontynuować?

Dziękuję bardzo za pomoc, Dan

questionAnswers(1)

yourAnswerToTheQuestion