문제

다음과 같이 JDO 구문을 사용하여 여러 매개변수에 대해 쿼리를 쉽게 수행할 수 있습니다.

//specify the persistent entity you're querying and you filter usign params
query = pm.newQuery(MyClass.class, " customer == paramCustomer && date >= paramStartDate && date <=paramEndDate ");

// declare params used above
query.declareParameters("com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"); 

//pass the object declared as params
MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

필터를 사용하여 프로그래밍 방식으로 문자열을 작성하는 것은 간단합니다.

"customer == paramCustomer && date >= paramStartDate && date <=paramEndDate"

params 선언에 대한 또 다른 문제는 다음과 같습니다.

"com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"

즉각적이지 않은 것은 필터에 있는(그리고 선언된) 매개변수에 따라 쿼리를 실행하기 위한 전략을 세우는 것입니다. 쿼리 실행의 가능한 순열(모든 매개변수, 첫 번째 매개변수만, 두 번째 매개변수만, 첫 번째와 두 번째 매개변수만 등...):

MyClassList = (List<MyClass>) query.execute(user, startDate, endDate);

나는 이것이 일반적인 작업이고 다른 누군가가 보다 일반적이고 효율적인 방식으로 이를 수행하고 있다고 확신합니다.

어떠한 제안?

도움이 되었습니까?

해결책

방법에서 해결책을 찾았습니다 query.executeWithArray

이 방법으로 필터와 매개변수 선언을 동적으로 구축하고 실제 개체를 개체 배열로 로드한 다음 위에서 언급한 메서드에 전달할 수 있습니다.

또 다른 중요한 방법은 executeWithMap 이름별로 매개변수를 바인딩하는 데 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top