2013-01-07 19 views
6

मेरे पास स्ट्रिंग्स की एक सूची है प्रत्येक स्ट्रिंग ग्रीनडाओ के माध्यम से जारी एक आइटम के लिए एक अद्वितीय पहचानकर्ता है।मैं ग्रीनडाओ क्वेरी कैसे बना सकता हूं जो आईडी की सूची के माध्यम से निर्दिष्ट सभी आइटम लोड करता है?

मैं एक प्रश्न है कि मुझे लोड करने के लिए यह सब वस्तुओं मेरी डेटाबेस फार्म की अनुमति देता है कैसे बनाऊं?

क्या कोई क्वेरीबिल्डर के साथ ऐसा करने की संभावना है या मुझे एसक्यूएल लिखने के लिए वापस जाने की आवश्यकता है?

उत्तर

6

इस संपत्ति वर्ग में in शर्त के साथ संभव है।

यह उदाहरण fieldValues में निहित फ़ील्ड मानों के साथ सभी बक्से लोड करता है। fieldValues प्रकार का है List<String>

List<LocalBox> boxes = getBoxDao(context).queryBuilder() 
     .where(LocalBoxDao.Properties.field.in(fieldValues)).list(); 
+0

कैसे init इकाई दाओ? निर्माण को दाओकोनफिग की आवश्यकता है – marlonpya

2

मैं, "क्वेरी में" में कुछ प्रकाश डाल करने के लिए
इस में एक सीमा होती है, हम नहीं कर सकते 100 से अधिक आईडी एक अंदर क्वेरी में
तो पारित चाहते हैं क्या मैंने यह हासिल करने के लिए किया था:

List<Product> productList = new ArrayList<Product>(); 
DaoSession daoSessionUni = TarneaAndroidApplicationContext.getInstance().getDaoSession(); 

for (int i = 0; i < rowIds.size(); i = i + 100) 
{ 
    ProductDao productDao = daoSessionUni.getProductDao(); 
    QueryBuilder<Product> queryBuilder = productDao.queryBuilder().where(
     ProductDao.Properties.Id.in(rowIds.subList(i + 100 < rowIds.size() ? 
                i + 100 : 
                rowIds.size())), 
     ProductDao.Properties.IsDeleted.eq(0));    
    productList.addAll(queryBuilder.list()); 
} 

यदि हम क्वेरी में उपयोग कर आईडी की एक सूची पास करना चाहते हैं तो हम इस विधि का उपयोग कर सकते हैं।