MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongodb java:Lớp POJO Perist với trường chung

Có các tùy chọn sau để làm cho nó hoạt động.

Theo phân lớp

Nếu bạn phân lớp với kiểu chung cụ thể mỗi lần, nó sẽ hoạt động:

public class MyClassCacheEntity extends CacheEntity<MyClass> {}

Bằng cách sử dụng BsonDocument + Jackson

Để tránh phân lớp con, bạn có thể thử lưu trữ các đối tượng tùy ý dưới dạng BsonDocument -s và serialize / deserialize chúng bằng cách sử dụng Jackson:

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);
  }
}

Điều này hoạt động cho đến khi bạn tránh được quy ước getters / setters cho withValue()value() , nếu không thì Mongo bắt đầu phàn nàn về cùng một vấn đề chung.

Tương tự với bson thuần túy

Tôi nghĩ, bạn cũng có thể thử làm điều đó tương tự như trên bằng cách sử dụng org.bson.codecs.pojo.PojoCodec mà bạn có thể tạo hoặc trích xuất từ ​​sổ đăng ký codec mongo hiện tại. Nếu bạn biết trước và cung cấp cho nó một lớp học thực sự, nó không nên phàn nàn về tính chung chung.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dữ liệu mùa xuân MongoDB:Phép chiếu và Tổng hợp

  2. Cài đặt MongoDB

  3. Mẫu thiết kế cho lớp truy cập dữ liệu

  4. Làm cách nào để cập nhật giá trị của tài liệu nhúng cụ thể, bên trong một mảng, của một tài liệu cụ thể trong MongoDB?

  5. pymongo- Làm cách nào để có các giá trị riêng biệt cho một trường cùng với các tham số truy vấn khác