У меня есть следующая сущность Play Framework (использующая Morphia для сохранения устойчивости) как часть общего приложения для ведения блога:
@Entity
public class Comment extends Model {
...
@Reference
@Indexed
public SiteUser commenter;
public static List<Comment> getLastCommentsByUsers(final List<SiteUser> users) {
final Query<Comment> query ds().createQuery(Comment.class);
query.field(commenter).hasAnyOf(users);
return query.asList();
}
}
SiteUser:
@Entity(noClassnameStored=true)
public class SiteUser extends AbstractUser {
public String realName;
}
AbstractUser:
public class AbstractUser extends Model {
@Indexed(value= IndexDirection.DESC, unique = true)
public String emailAddress;
@Required
public String password;
}
Метод getLastCommentsByUsers ()
должен возвращать все комментарии пользователей в параметре users
, но я всегда получаю пустой список List
. Причина того, что Commment
является отдельной коллекцией, состоит в том, чтобы иметь возможность получить последние X Comment
определенных пользователей через связанные с ними сообщения
, что невозможно. если Комментарий
встроен в коллекцию Post
.
Что-то не так с моим запросом (следует ли использовать что-то другое, кроме hasAnyOf
), или это проблема с сопоставлением отношений - следует ли мне использовать вместо этого ObjectId
?