Java 如何在哈希映射对象上使用Play Morphia来使用find()或filter()?
我使用Play framework和Play Morphia在Java中使用MongoDb。 我收到一条实体消息,其定义如下: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
@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中所有收件人的值为真或假的消息,我只是不知道如何在哈希映射上进行查询…好吧,我已经考虑过了,但我想它不介意一劳永逸地知道如何查询哈希映射。。。