close
تبلیغات در اینترنت
پرس و جو,query,RealmList,@LinkingObjects,پرس و جوی همزمان Realm,پرس و
صفحه اصلی پرشین استک

{ پرشین استک }

به دنیای برنامه نویسی خوش آمدید
|


پرشین استک تنها یک سایت نیست بلکه یک پروژه همگانی می باشد


تعداد مطالب :
142


تعداد توسعه دهندگان :
11


تاریخ امروز :
جمعه 29 تیر 1397

به کانال تلگرام ما بپیوندید


×

لیست سوالات من

افزودن

چگونه می توان در Realm به صورت همزمان و با دو شرط پرس و جو کرد ؟

چگونه می توانم یک ساختار مثل این را پرس و جو کنم :

 

public class Animal extends RealmObject{ 
RealmList<Bird> birds;
}

public class Bird extends RealmObject{
int type;
RealmList<RealmInteger> species;
}

 

 

RealmInteger یک شی با مقدار int است . من می خواهم همه اشیاء Animal را پیدا کنم که دارای Bird است که ارزش (value) 3 دارد و پرنده نوع (type) 2 است . من این را امتحان کردم اما type را نادیده میگیرد :

 

 

realm.where(Animal.class)
.equalTo("birds.type",2)
.equalTo("birds.species.value",3)
.findAll();

 

حدس من این است که مقداری یکسان با value پیدا می کند ، اما در همان زمان فیلد type را بررسی نمی کند . من به یک روش برای انجام یک عیب یابی equalTo("birds.species.value", 3). نیاز دارم تا فقط پرندگان (Birds) نوع (type) 2 را بررسی کنم؟

به روز رسانی : جواب زیر را امتحان کنید . حیوان را با داده ها بر می گرداند :

 

"birds":[
{
"species":[3,15,26],
"type":1
},
{
"species":[],
"type":2,
}
]

 

 

از آنجایی که این حیوان (Animal) یک مقدار (value)  3 و نوع  (type) 2 ندارد ، نباید آنرا برگرداند اما با این حال این کار را انجام می دهد .

 

پاسخ 1 :

دلیل اصلی این است که شما از نقطه نظر حیوانات (Animal)  پرس و جو می کنید و دو سطح RealmList دارید . بعد از آن یک نوع sub-query است که هنوز توسط  Realm پشتیبانی نمی شود . 

جزئیات نحوه کارکرد پرس و جو (query) را ، در لینک زیر می توانید مشاهده کنید .

هنوز هم امکان انجام چیزی که شما می خواهید وجود دارد . ترکیبی از حاشیه نویسی با LinkingObjects@ و کمی کار برای انجام دادن آن . در زیر نحوه ی انجام آن نشان داده شده است :

 

// Animal class must have a stable hashcode. I did it by adding a primary key
// here, but it can be done in multiple ways.
public class Animal extends RealmObject{
@PrimaryKey
public String id = UUID.randomUUID().toString();
public RealmList<Bird> birds;

@Override
public boolean equals(Object o){
// Make sure you have a stable equals/hashcode
// See https://realm.io/docs/java/latest/#realmobjects-hashcode
if (this == o)return true;
if (o == null || getClass()!= o.getClass()) return false;
Animal animal = (Animal) o;
return id.equals(animal.id);
}

@Override
public int hashCode(){
return id.hashCode();
}
}

// Add a @LinkingObjects field to Bird
// See https://realm.io/docs/java/latest/#inverse-relationships
public class Bird extends RealmObject{
public int type;
public RealmList<RealmInteger> species;
@LinkingObjects("birds")
public final RealmResults<Animal> animalGroup = null;

@Override
public String toString(){
return "Bird{"+
"type = "+ type +
'}';
}
}

// Query the birds instead of Animal
RealmResults<Bird> birds = realm.where(Bird.class)
.equalTo("type",2)
.equalTo("species.value",3)
.findAll();

// You must collect all Animals manually
// See https://github.com/realm/realm-java/issues/2232
Set<Animal> animals = new HashSet<>();
for (Bird bird : birds){
animals.addAll(bird.animalGroup);
}

 

 

پاسخ 2 :

از کد زیر استفاده کنید :

 

realm.where(Animal.class)
.equalTo("birds.type",2)
.findAll()
.where()
.equalTo("birds.species.value",3)
.findAll();

 

این ترفند تنها برای لینک های query چندگانه ضروری است .

 

صفحه اصلی

50

24 / 05 / 1396

PERSIAN STACK


چرا گاهی اوقات API موقعیت مکانی سرویس گوگل پلی ، موقعیت مکانی اشتباهی را برمی گرداند ؟

ادامه مطلب

613

چگونه نرم افزار ضبط صدای اندرویدی بسازیم ؟

ادامه مطلب

549

چرا TextView کلمات را با حروف می شکند ؟

ادامه مطلب

497

دانلود تمامی API های اندروید

ادامه مطلب

435

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

419

چرا وبسایت تجارت الکترونیک Magento 2 در Webview اندروید کار نمی کند ؟

ادامه مطلب

363

دانلود پروژه نمایش جستجوی کتاب برای اندروید

ادامه مطلب

347

چگونه Google API برای سطح API 25 را پیدا کنیم ؟

ادامه مطلب

345

دانلود سورس کد بازی اندرویدی Klooni 1010! + فایل APK

ادامه مطلب

259

آیا راهی برای یافتن تغیرات ماه در نمای تقویم اندروید (calendar view) وجود دارد ؟

ادامه مطلب

243

در تکمیل خودکار اندروید ، دلیل dispatchProvideAutofillStructure() not laid out چیست ؟

ادامه مطلب

233

چرا زمانی که با استفاده از cordova در اندروید 7.0 ، اس ام اس ارسال می کنیم ، با اثتثنای (Exception) امنیتی مواج

ادامه مطلب

227

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

211

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

195

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

181

چگونه ارور com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders را در اندروید رفع کنیم ؟

ادامه مطلب

173

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

121

دانلود کتابخانه Retrofit برای اندروید + پروژه

ادامه مطلب

119

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

113

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

111

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

یکشنبه 05 آذر 1396

قسمت هفدهم - لیست ها در HTML

ادامه مطلب

یکشنبه 21 آبان 1396

چگونه می توان با استفاده از CSS ، رنگ placeholder را تغییر داد ؟

ادامه مطلب

یکشنبه 21 آبان 1396

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

شنبه 20 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

شنبه 20 آبان 1396

قسمت پانزدهم - عکس ها در HTML

ادامه مطلب

جمعه 19 آبان 1396

قسمت چهاردهم - لینک ها در HTML

ادامه مطلب

یکشنبه 14 آبان 1396

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

یکشنبه 14 آبان 1396

قسمت سیزدهم - CSS در HTML

ادامه مطلب

شنبه 13 آبان 1396

قسمت بیست و پنجم (قسمت آخر) - آموزش ساخت بازی حدس

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و چهارم - آموزش نحوه ی پردازش فایل ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و سوم - برنامه تکمیلی جاوا (6)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و دوم - معرفی آرایه ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و یکم - برنامه تکمیلی جاوا (5)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیستم - معرفی مفهوم وراثت در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت نوزدهم - برنامه تکمیلی جاوا (4)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هجدهم - معرفی عبارات کنترلی در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هفدهم - برنامه تکمیلی جاوا (2-3)

ادامه مطلب

چهارشنبه 10 آبان 1396

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید می توان آیدی موبایل را بدست آورد ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید برنامه تماس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید یک منو ساده بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از برنامه اسکرین شات بگیریم ؟

ادامه مطلب

چگونه می توان در اندروید RTL یا LTR صفحه را ثابت کرد ؟

ادامه مطلب

چگونه می توان در اندروید حالت افقی (landscape) را غیر فعال کرد ؟

ادامه مطلب

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

دانلود سورس کد اپلیکیشن آموزش زبان انگلیسی + فایل APK

ادامه مطلب

چگونه نگذاریم در آغاز اکتیویتی ، EditText فوکوس را بدست آورد ؟

ادامه مطلب

چگونه کیبورد پیش فرض اندروید (Soft Keyboard) را پنهان کرده یا ببندیم ؟

ادامه مطلب

چرا سرعت مجازی ساز اندروید کم است و چگونه می توان سرعت آنرا افزایش داد ؟

ادامه مطلب

تفاوت بین واحد های اندازه گیری "px" , "dp" , "dip" و "sp" چیست ؟

ادامه مطلب

دانلود سورس کد اپلیکیشن آهنگ سازی برای اندروید + فایل APK

ادامه مطلب

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

× برای نظر گذاشتن یا پاسخ دادن به سوالات باید در سایت عضو باشید !

برای حمایت از ما روی بنر های زیر کلیک کنید .

برای سفارش تبلیغات به ما ایمیل بزنید .

ارتباط با ما