我有以下 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();
}
}
站点用户:
@Entity(noClassnameStored=true)
public class SiteUser extends AbstractUser {
public String realName;
}
摘要用户:
public class AbstractUser extends Model {
@Indexed(value= IndexDirection.DESC, unique = true)
public String emailAddress;
@Required
public String password;
}
该方法getLastCommentsByUsers()
应该返回users
参数中用户的所有评论,但我总是得到一个空的List
回复。之所以Commment
是一个单独的集合,是为了能够Comment
通过某些用户在其关联的 s 中检索最后一个 X s ,如果嵌入在集合中Post
,这是不可能的。Comment
Post
我的查询是否有问题(我应该使用 以外的其他hasAnyOf
内容),还是关系映射有问题 - 我应该ObjectId
改用它吗?