내 서블릿이 다음을 수행해야합니다. 사용자가 장소에 등록 할 때 해당 사용자가 현재 위치가 어딘 곳에서도 등록되어 있는지 확인합니다 (등록 취소 한 경우). 그를 다시 등록하기.
나는이 내 문제를 보여주기 위해 단순화 한 다음 코드 :Objectify가 동 기적으로 저장하지 않습니다.
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();
}
문제는 내가 두 번째 시간이 모든 작업을 미리 형성 할 때, 그것은 항상 있다는 것을 발견 한 것입니다 이미 데이터 저장소에 방문 (두 번째 테스트마다). 그리고 나는 혼란 스럽다. 'now()'가 바로 그것을 저장하고 계속 실행하는 것을 가정하지 않는가? 당신이 엔티티를 생성/업데이트 할 때,이 방법은 즉시 반환하지만 indexes are still being built asynchronously :
, 당신의 도움을 당신에게 댄
디버그 도구로 이것을 실행하면 모든 것이 잘 동작합니다. 그것이 내가 속도의 문제라고 생각한 이유입니다. – RCB