MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब जावा:सामान्य क्षेत्र के साथ पेरिस्ट पीओजेओ वर्ग

इसे काम करने के लिए निम्नलिखित विकल्प हैं।

उपवर्ग द्वारा

यदि आप हर बार कंक्रीट जेनेरिक प्रकार के साथ उपवर्ग करते हैं, तो यह काम करता है:

public class MyClassCacheEntity extends CacheEntity<MyClass> {}

BsonDocument . का उपयोग करके + जैक्सन

सबक्लासिंग से बचने के लिए आप मनमानी वस्तुओं को BsonDocument . के रूप में स्टोर करने का प्रयास कर सकते हैं -s और जैक्सन का उपयोग करके उन्हें क्रमबद्ध/deserialize करें:

public class CacheEntity<V> {
  private String cacheId;
  private BsonDocument rawValue;

  // [...]

  // sets the value
  public void withValue(T o) {
    this.rawValue = BsonDocument.parse(new ObjectMapper().writeValueAsString(o))
  }

  // recovers the value
  public T value(Class<T> clazz) {
    return new ObjectMapper().readValue(this.rawValue.toJson(), clazz);
  }
}

यह तब तक काम करता है जब तक आप withValue() . के लिए गेटर्स/सेटर्स कन्वेंशन से बचते हैं और value() तरीके, अन्यथा Mongo उसी जेनरिक समस्या के बारे में शिकायत करना शुरू कर देता है।

शुद्ध bson के साथ भी ऐसा ही

मुझे लगता है, आप इसे ऊपर की तरह org.bson.codecs.pojo.PojoCodec का उपयोग करके भी करने का प्रयास कर सकते हैं। जिसे आप या तो वर्तमान मोंगो कोडेक्स रजिस्ट्री से बना या निकाल सकते हैं। यदि आप पहले से जानते हैं और इसे वास्तविक वर्ग देते हैं, तो इसे जेनरिक के बारे में शिकायत नहीं करनी चाहिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB दस्तावेज़ से मूल्य कैसे प्राप्त करें

  2. नेवला में एनम कैसे बनाएं और उपयोग करें

  3. पाइमोंगो त्रुटि:bson.errors.InvalidBSON:'utf8' कोडेक बाइट 0xa1 को स्थिति 25 में डिकोड नहीं कर सकता:अमान्य प्रारंभ बाइट

  4. MongoDB में रेगेक्स स्ट्रिंग खोज को गति दें

  5. धीमी मोंगोडीबी क्वेरी:क्या आप समझा सकते हैं क्यों?