예상대로 작동하지 않습니다와 내가 함께 데이터 엔티티를 조회 할 :AppEngine에 JDO 쿼리 I AppEngine에 함께 일하고 있어요
- BOOL 데이터 '를 선택하면'False입니다.
- 'registrationTimestamp'날짜의 오름차순입니다.
내 코드 : 나는 datas를 볼 때
Query query = pm.newQuery(DeviceInfo.class);
query.setFilter("optional == False");
query.setOrdering("registrationTimestamp asc");
List<DeviceInfo> datas = (List<DeviceInfo>)query.execute();
이 '선택'에 데이터가 있습니다은 True입니다. '선택 사항'이 True 인 항목을 필터링 아웃하려고합니다. setFilter ("optional == False")가 작동하지 않는 것 같습니다.
내가 원하는 쿼리를 어떻게 수행 할 수 있습니까?
편집 나는 DataNucleus에 의해 권장 DEBUG 레벨 로그인 얻었다.
org.datanucleus.plugin.NonManagedPluginRegistry resolveConstraints: Bundle "org.datanucleus.jpa" has an optional dependency to "org.datanucleus.enhancer" but it cannot be resolved
org.datanucleus.plugin.NonManagedPluginRegistry resolveConstraints: Bundle "org.datanucleus" has an optional dependency to "org.eclipse.equinox.registry" but it cannot be resolved
org.datanucleus.plugin.NonManagedPluginRegistry resolveConstraints: Bundle "org.datanucleus" has an optional dependency to "org.eclipse.core.runtime" but it cannot be resolved
org.datanucleus.PersistenceConfiguration setProperty: Property datanucleus.rdbms.sql.allowAllSQLStatements unknown - will be ignored
org.datanucleus.PersistenceConfiguration setProperty: Property datanucleus.rdbms.stringDefaultLength unknown - will be ignored
org.datanucleus.PersistenceConfiguration setProperty: Property datanucleus.appengine.autoCreateDatastoreTxns unknown - will be ignored
org.datanucleus.ObjectManagerFactoryImpl logConfiguration: ================= Persistence Configuration ===============
org.datanucleus.ObjectManagerFactoryImpl logConfiguration: DataNucleus Persistence Factory - Vendor: "DataNucleus" Version: "1.1.5"
org.datanucleus.ObjectManagerFactoryImpl logConfiguration: DataNucleus Persistence Factory initialised for datastore URL="appengine" driver="" userName=""
org.datanucleus.ObjectManagerFactoryImpl logConfiguration: ===========================================================
org.datanucleus.PersistenceConfiguration setProperty: Property datanucleus.query.cached unknown - will be ignored
org.datanucleus.jdo.metadata.JDOMetaDataManager <init>: Registering listener for metadata initialisation
org.datanucleus.jdo.metadata.JDOAnnotationReader processClassAnnotations: Class "net.xxxxxxxxx.xxxxxxx.server.DeviceInfo" has been specified with JDO annotations so using those.
org.datanucleus.store.appengine.MetaDataValidator validate: Performing appengine-specific metadata validation for net.xxxxxxxxx.xxxxxx.server.DeviceInfo
org.datanucleus.store.appengine.MetaDataValidator validate: Finished performing appengine-specific metadata validation for net.xxxxxxxxx.xxxxxx.server.DeviceInfo
org.datanucleus.store.StoreDataManager registerStoreData: Managing Persistence of Class : net.xxxxxxxxx.xxxxxxx.server.DeviceInfo [Table : <class name="DeviceInfo"
identity-type="application"
objectid-class="javax.jdo.identity.ObjectIdentity"
persistence-modifier="persistence-capable"
>
<inheritance strategy="new-table">
</inheritance>
<field name="deviceRegistrationID"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="gcm"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="key"
persistence-modifier="persistent"
primary-key="true"
null-value="none"
default-fetch-group="true"
embedded="false"
unique="false">
</field>
<field name="optional"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="registrationTimestamp"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
</class>
, InheritanceStrategy : new-table]
org.datanucleus.store.StoreDataManager registerStoreData: Managing Persistence of Class : net.xxxxxxxxx.xxxxxxx.server.DeviceInfo [Table : <class name="DeviceInfo"
identity-type="application"
objectid-class="javax.jdo.identity.ObjectIdentity"
persistence-modifier="persistence-capable"
>
<inheritance strategy="new-table">
</inheritance>
<field name="deviceRegistrationID"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="gcm"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="key"
persistence-modifier="persistent"
primary-key="true"
null-value="none"
default-fetch-group="true"
embedded="false"
unique="false">
</field>
<field name="optional"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
<field name="registrationTimestamp"
persistence-modifier="persistent"
null-value="none"
default-fetch-group="true"
embedded="true"
unique="false">
</field>
</class>
, InheritanceStrategy : new-table]
org.datanucleus.jdo.metadata.JDOMetaDataManager$MetaDataRegisterClassListener registerClass: Listener found initialisation for persistable class net.xxxxxxxxx.xxxxxxx.server.DeviceInfo
com.google.appengine.api.datastore.QueryResultsSourceImpl logChunkSizeWarning: This query does not have a chunk size set in FetchOptions and has returned over 1000 results. If result sets of this size are common for this query, consider setting a chunk size to improve performance.
To disable this warning set the following system property in appengine-web.xml (the value of the property doesn't matter): 'appengine.datastore.disableChunkSizeWarning'
도움이되기를 바랍니다 및 로그 대해 무엇을 말한다합니다 쿼리? – DataNucleus
@DataNucleus, setFilter 또는 setOrdering을 사용할 수없는 경우 색인을 찾을 수 없습니다. 그러나 질문에 표시된 쿼리를 사용하면 예외가 발생하지 않으며 오류 로그도 표시되지 않습니다. 그러나 실제로 쿼리 결과에 "optional == True"데이터가 표시됩니다. 그래서 setFilter가 작동하지 않는다고 생각합니다. – Tomcat
로그는 사용 된 낮은 수준의 쿼리를 알려줍니다. – DataNucleus