MongoDB: zapytanie @DBRef
Mam hierarchię klas zaprojektowaną dla powiadomień użytkowników sklepu:
@Document
public class Notification<T> {
@Id
private String id;
@DBRef
private T tag;
...
}
@Document
public class NotificationA extends Notification<WrappedA> {
}
@Document
public class NotificationB extends Notification<WrappedB> {
}
...
Jest to przydatne do zwracania tablic polimorficznych, co pozwala mi na przechowywanie dowolnego rodzaju danych w polu „tag”. Problem zaczyna się, gdy zawinięte obiekty zawierają pola @DBRef:
@Document
public class WrappedA {
@Id
private String id;
@DBRef
private JetAnotherClass referenced;
...
}
Zapytania dotyczące pól „tag” działają poprawnie:
db.NotificationA.find( {"tag.$id": ObjectId("507b9902...32a")} )
Ale muszę zapytać o pola JetAnotherClass (dwa poziomy pól @DBRef). Próbowałem z notacją kropkową, a także z podobiektami, ale zwraca null:
Notacja kropkowa:
db.NotificationA.findOne( {"tag.$referenced.$id": ObjectId("508a7701...29f")} )
Podobiekty:
db.NotificationA.findOne( {"tag.$referenced": { "_id": ObjectId("508a7701...29f") }} )
Jakaś pomoc? Z góry dziękuję!