GAE 데이터 저장소를 쿼리 할 때 이상한 동작이 발생합니다. 특정 상황에서 정수 필드에 대해 필터가 작동하지 않습니다.정수 필드 쿼리 GAE 데이터 저장소
log.info("start experiment");
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
int val = 777;
// create and store the first entity.
Entity testEntity1 = new Entity(KeyFactory.createKey("Test", "entity1"));
Object value = new Integer(val);
testEntity1.setProperty("field", value);
datastore.put(testEntity1);
// create the second entity by using BeanUtils.
Test test2 = new Test(); // just a regular bean with an int field
test2.setField(val);
Entity testEntity2 = new Entity(KeyFactory.createKey("Test", "entity2"));
Map<String, Object> description = BeanUtilsBean.getInstance().describe(test2);
for(Entry<String,Object> entry:description.entrySet()){
testEntity2.setProperty(entry.getKey(), entry.getValue());
}
datastore.put(testEntity2);
// now try to retrieve the entities from the database...
Filter equalFilter = new FilterPredicate("field", FilterOperator.EQUAL, val);
Query q = new Query("Test").setFilter(equalFilter);
Iterator<Entity> iter = datastore.prepare(q).asIterator();
while (iter.hasNext()) {
log.info("found entity: " + iter.next().getKey());
}
log.info("experiment finished");
로그는 다음과 같습니다 : 다음 자바 코드는 문제를 재현
에만 두 엔터티가 실제로 데이터 저장소 모두 '에 저장되어있는 경우에도 제 1 개체를 발견 어떤 이유로INFO: start experiment
INFO: found entity: Test("entity1")
INFO: experiment finished
필드 '값은 777입니다 (데이터 저장소 뷰어에 표시됨). 엔티티가 생성되는 방식이 중요한 이유는 무엇입니까? 편리하기 때문에 BeanUtils를 사용하고 싶습니다.
로컬 서버와 GAE에 동일한 문제점이 발생합니다.
좀 더 자세한 정보를 얻을 수 있습니까? 특히 코드/다이어그램. – Colton
아무도 아이디어가 없습니까? 그래서 JDO를 시도해 볼 수 있습니다. 아주 단순한 코딩조차도 실패 할 때 이러한 정교한 프레임 워크를 사용하여 자신감을 갖게하지는 못합니다. – jjoller