MongoDB için Pojo eşleştiricisi Morphia'yı kullanıyorum ve benim görüşüme göre çok basit olması gereken bir görevi zor buluyorum: kimliğine göre bir nesne almak. Bir koleksiyondaki tüm nesneleri bulabiliyorum ancak listeden aldığım bir kimliği kullanarak basit sorgulama görevini çözemiyorum. Aslında ObjectId'den bahsediyorum. JSON içinde oluşturmaya çalışırsam, bkz.Kimliği ile Sorgu Morphia
cevap
Bu soru eksik görünüyor.
Ayrıca, sorunun cevabı Morphia QuickStart page üzerindedir. Aşağıdaki gibi basit görünüyor. Bu yüzden kesinlikle daha fazla ayrıntıya ihtiyacınız olacak.
Datastore ds = morphia.createDatastore("testDB");
String hotelId = "516d41150364a6a6697136c0"; // the ID of the hotel we want to load
ObjectId objectId = new ObjectId(hotelId);
// and then map it to our Hotel object
Hotel hotel = ds.get(Hotel.class, objectId);
Kodunuzun neden çalıştığını veya neler yaptığını açıklayabilir misiniz? En iyi cevaplar, sadece işleyen koddan ziyade çözümü açıklar. – nathangiesbrecht
@nathangiesbrecht Önceki [yanıt] 'da (http://stackoverflow.com/a/4475711/1094584) yanlıştır. MongoDB Kimliği, String tipi değil. MongoDB Id dosyasının Türü ObjectId'dir (org.bson.types.ObjectId). –
Eğer kimliğe göre buluyoruz ve kimliği kullanıcı tarafından sağlanıyorsa, yukarıda verilen çözümler kullanmamalısınız (o verinin ne tür olabileceği anlamına gelir).
olarak documentation açıklandığı, bir Nesne Kimliği 12 byte oluşur, bu nedenle new ObjectId(myValue)
başka bir şey geçmesi halinde, kodunuzu bir IllegalArgumentException
atar. İşte
Ben kimliğe göre bulmak için bir yöntem uygulamaya nasıl:
public Model findById(String id) throws NotFoundException {
if (!ObjectId.isValid(id)) {
throw new NotFoundException();
}
ObjectId oid = new ObjectId(id);
Model m = datastore().find(Model.class).field("_id").equal(oid).get();
if (m == null) {
throw new NotFoundException();
}
return m;
}
Kimlik geçerli bir ObjectId değilse, * bir NotFoundException değil, bir IllegalArgumentException atmalıdır. – metaforge
- 1. morphia BigDecimal kalıcılık sorunu
- 2. Anonim Kullanıcı Kimliği ile Kaydı Kullanıcı Kimliği
- 3. MongoDB: Bir Nesne Kimliği dizisi
- 4. Ddply ile grup kimliği atama
- 5. Morphia ve Mongodb ile Haritaların Haritasının Kalıcı Hale Getirilmesi ve Geri Alınması
- 6. Sphinx ile Karmaşık Sorgu
- 7. Realm.io GroupBy ile Sorgu
- 8. sorgu özel sohbet katılımcılar sorgu
- 9. MOBDB'de Casbah ile Nesne Kimliği ile Nasıl Bulunur?
- 10. sorgu?
- 11. Geçersiz Uygulama Kimliği: Sağlanan Uygulama Kimliği, fbml
- 12. Morphia - Belirli bir türden bir özelliği yüklemek nasıl yok sayılır?
- 13. ASP.NET Çoklu Resim Kimliği ile mi?
- 14. Spring Security ile Oturum Kimliği Alınıyor
- 15. Öğe kimliği ile kimlik bilgilerini Rows.count
- 16. ReactiveMongo ile ekleme yaptıktan sonra kimliği alın
- 17. Hazırda bekletme: varlık ile kimliği al
- 18. Kullanıcı Kimliği ile QueueBackgroundWorkItem Kullanılsın mı?
- 19. raylar3-jquery-autocomplete formtastic ile başvuru kimliği
- 20. jQuery Kimliği,
- 21. admin SDK ile ilgili sorgu
- 22. Solr Sorgu, LIKE ile birlikte
- 23. SQL sorgu ile avg ve grup tarafından
- 24. Ardışık sorgu Sorgu
- 25. Sorgu, yerel sorgu, adlandırılmış sorgu ve yazılan sorgu arasındaki fark
- 26. MySql Union Anında tablo kimliği
- 27. SmsManager ile sms, Android'de özelleştirilmiş thread kimliği ile nasıl gönderilir?
- 28. Sorgu
- 29. jQuery kimliği
- 30. jQuery kimliği
varlığa "@id Nesne Kimliği id" eklemeyi asla unutmam. Hayatınızı kolaylaştırır. – caarlos0