通过 Morphia 使用 $in 运算符 - 做错了吗?
我有以下 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
是一个单独的集合的原因是能够检索某些用户在其关联的 Post
中的最后 X 个 Comment
,这不是如果 Comment
嵌入在 Post
集合中,则不可能。
我的查询是否有问题(我应该使用 hasAnyOf
之外的其他内容),还是关系映射存在问题 - 我应该使用 ObjectId
代替?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我将 in() 方法与列表或集合一起使用,并且它工作得很好。这是一个片段:
这也适用于嵌入或引用的集合。
I use the in() method with a list or set and its working perfectly. Here's a snippet:
This should work for collection of embedded or references too.
您应该使用
List>
来查询:或者您可以通过以下方式获取密钥:
You should use
List<Key<SiteUser>>
to query:Or you can just get the keys by: