2014-07-16 2 views
0

키를 사용하여 엔터티에 액세스하려고합니다.하지만 시도 할 때마다 예외가 발생합니다.키로 데이터 스토어에서 엔터티를 가져올 수 없습니다.

datastore.put(en); 
    String key = en.getKey(); 

그리고 키는 4644337115725824. 같은 문자열로 다른 서블릿에 보내 내가 마지막 줄에이 코드

Key key = KeyFactory.createKey("User", req.getParameter("key")); 
    Entity en = datastore.get(key); 

에 의해 엔티티를 얻으려고 할 때 나는 EntityNotFoundException와 '없음이됩니다 엔티티가 키와 일치하는 것으로 확인되었습니다. User ("4644337115725824") ' 무엇이 잘못 되었나요?

+0

키와 일치하는지 확인 :

Key key = entity.getKey(); String serializedKey = KeyFactory.keyToString(key); 

을 나중에, 당신은 다른 서블릿에서 키를 직렬화하는 경우, 당신은 KeyFactory.stringToKey(string) 사용할 수 Datastore의 키를 사용하면 EntityNotFoundException은 데이터 저장소에서 일치 항목이 발견되지 않은 경우에만 발생합니다 – Bharath

+0

. 주요 일치합니다. –

+0

'Entity.getKey()'는'String'이 아닌'Key'를 반환하므로 다른 서블릿으로 전달하기 위해 키에서 ID를 얻고 싶다면'Key.getID()'('Long' ID의 경우) 또는'Key.getName()'의'String' ID를 반환합니다. 이 엔티티의 데이터 저장소 뷰어에서 무엇을 볼 수 있습니까? – tx802

답변

0

키에 대한 직렬화/직렬화 문제가있을 수 있습니다. 웹 적합 문자열에 키를 직렬화하려면 KeyFactory.keyToString(key) 사용

Key deserializedKey = KeyFactory.stringToKey(serializedKey); 
Entity en = datastore.get(deserializedKey); 
+0

감사합니다. –

관련 문제