Java 如何在哈希映射对象上使用Play Morphia来使用find()或filter()?

Java 如何在哈希映射对象上使用Play Morphia来使用find()或filter()?,java,mongodb,playframework,morphia,Java,Mongodb,Playframework,Morphia,我使用Play framework和Play Morphia在Java中使用MongoDb。 我收到一条实体消息,其定义如下: @Entity public class Message{ public String senderId; public Date date; public String initiatorId; @Embedded public MessageBasicInfo basicInfo; } public class MessageBas

我使用Play framework和Play Morphia在Java中使用MongoDb。 我收到一条实体消息,其定义如下:

@Entity
public class Message{
    public String senderId;
    public Date date;
    public String initiatorId;
    @Embedded public MessageBasicInfo basicInfo;
}
public class MessageBasicInfo implements IModel{
    public HashMap<String, Boolean> recipients;
}
MessageBasicInfo的定义如下:

@Entity
public class Message{
    public String senderId;
    public Date date;
    public String initiatorId;
    @Embedded public MessageBasicInfo basicInfo;
}
public class MessageBasicInfo implements IModel{
    public HashMap<String, Boolean> recipients;
}
公共类MessageBasicInfo实现IModel{
公共哈希图接收者;
}
现在,我只想从Mongo中检索收件人hashmap中值为true的消息。 例如,我知道如何在列表中执行此操作,但不知道如何使用hashmap对象执行此操作。 如果有任何建议,我将不胜感激。
谢谢。

HashMap很难查询。我建议您将
MessageBasicInfo
重新组织为

public class MessageBasicInfo implements IModel {
   public String key;
   public Boolean value;
}
然后,您可以通过以下方式查询所有
true
value消息:

Message.q("basicInfo.value", true).asList();

简而言之,您希望根据
获取
。为此,您必须遍历整个
HashMap
,并检查
值是否为
true
,如果为true,则将相应的
键保存在
列表
对象中。是的,但对于您刚才建议的内容,我不使用MongoDB提供的优势。我知道有一种方法可以查询Mongo中所有收件人的值为真或假的消息,我只是不知道如何在哈希映射上进行查询…好吧,我已经考虑过了,但我想它不介意一劳永逸地知道如何查询哈希映射。。。