2013-03-25 2 views
1

나는 이런 식으로 객관화와 객체를 절약 해요 :Objectify가 캐시 된 값을 반환하지 않게하는 방법은 무엇입니까?

Thing th = new Thing(); 
th.identifier = thingId; 
th.name = thingName; 
th.json = thingData; 
ofy().save().entity(thing); 
pResponse.setStatus(200); 
pResponse.getWriter().println("OK"); 

나는 값이 데이터베이스에 업데이트되었습니다 GAE 데이터 저장소 브라우저를 사용하여 확인합니다. 나는 국부적으로 달리고있다. 그러면 다음과 같은 모든 것을로드합니다.

Map<String, List<Thing>> responseJsonMap = new HashMap<String, List<Thing>>(); 
List<Thing> things = ofy().load().type(Thing.class).list();   
responseJsonMap.put("things", things); 
pResponse.setContentType("application/json"); 
try { 
    GSON.toJson(responseJsonMap, pResponse.getWriter()); 
} ... 

내가 되 찾을 내용은 저장하기 전에 있던 데이터입니다. 엔티티에서 캐싱을 해제하고 ofy().clear()을 호출했지만 둘 다 시도하지 않았습니다. 서버를 다시 시작하거나 오래 기다리면 저장된 데이터가 제공됩니다. 저장 후에도 .now()을 추가하려고했지만 작업이 완료되었다는 것을 데이터 저장소에서 확인할 수 있으므로 필요하지 않습니다. 정말 방금 저장 한 데이터를로드하고 싶습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

내가 사용 Objectify4.0b1입니다. –

답변

4

제가 잘못하고있는 것은 설명서를 읽지 않고 단계를 잊지 않는 것입니다.

객관화

는 요청의 마지막에 남아있는 스레드 로컬 트랜잭션 상황 및 출원중인 비동기 작업을 정리하는 필터를 필요로한다. 당신의 WEB-INF/web.xml 파일이 추가 : 당신이 정말로 기대하지 않습니다 캐시 값을 받고하는 경우

<filter> 
    <filter-name>ObjectifyFilter</filter-name> 
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>ObjectifyFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

음, 좋은 일 확인.

관련 문제