Java Google App Engine DataStore : 'In'운영자가 Python과 마찬가지로 JDO 쿼리 필터에서 사용 가능합니까?

StackOverflow https://stackoverflow.com/questions/1448677

  •  11-09-2019
  •  | 
  •  

문제

이 페이지 GAE Datastore에서 사용될 수있는 'in'연산자를 설명하여 단일 값뿐만 아니라 가능한 일치 목록과 필드를 비교합니다.

그러나 이것은 파이썬을위한 것입니다. Java (App Engine 1.2.5)에서

query.setFilter("someField IN param");

내 javax.jdo.

이 작업을 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

파이썬 버전 IN 실제로 애플리케이션 수준 코드에서 구현됩니다 (오픈 소스 앱 엔진 SDK의 일부이므로 검사 할 수 있음) : 본질적으로, IN 당신의 쿼리가됩니다 == (여기서 n == len (param)) 및 해당 N 쿼리의 결과는 전체 결과로 다시 병합됩니다.

Google 지원 소스 코드의 일부로이 기능을 갖는 것이 편리하지만,이 편의를 넘어서 부가 가치는 없으며 특히 자신의 코드에서 수행하는 성능 이점이 없습니다. 따라서이 사소한 조정이 (적어도 지금까지) Java 버전에 추가되지 않았다는 사실에 놀라지 않습니다.

다른 팁

IN 연산자를 사용하려면 다음을 사용합니다.

List<Site> query(List<String> searchTerms)
{
    javax.jdo.Query q = pm.newQuery(Site.class);
    q.setFilter("param.contains(siteField)");
    q.declareParameters("java.util.Collection param");
    return (List<Site>)q.execute(searchTerms);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top