我的MongoDB中有一个m:n连接, MessageUserConnection 是User和Message之间的类。 现在我将获得所有MessageUserConnections,其中 MessageUserConnection#confirmationNeeded 为true,read为false, Message#receiveDate 不比上周更早。 有没有可能用Spring Data做到这一点? 非常感谢!
public class MessageUserConnection {
@Id
private String id;
@DBRef
private User userCreatedMessage;
@DBRef
private Message message;
private Boolean confirmationNeeded;
private Boolean read;
}
public class Message {
@Id
private String id;
private String title;
private String message;
private DateTime receiveDate;
}
[编辑] 我自己试过了:
@Query("FROM MessageUserConnection AS muc WHERE muc.confirmationNeeded = ?0 AND muc.message.receiveDate = ?1")
List<MessageUserConnection> findMessageUserConnectionByConfirmationNeededAndReceiveDate(final Boolean confirmationNeeded, final DateTime receiveDate);
我得到以下异常:
引起:com.mongodb.util.JSONParseException: FROM MessageUserConnection AS muc WHERE muc.confirmationNeeded =&#34; _param_0&#34; AND muc.message.receiveDate =&#34; _param_1&#34;
有谁知道我在做错了什么? 非常感谢!
[编辑]
我遇到了另一个问题。我的查询目前看起来像这样。
@Query("{$and : [{'confirmationNeeded' : ?0}, {'message.receiveDate' : ?1}]}")
其中confirmationNeeded是布尔值,message.receiveDate是Joda#DateTime。使用此查询,我得到以下异常:
org.springframework.data.mapping.model.MappingException:无效的路径引用message.receiveDate!关联只能直接指向或通过他们的id属性!
这是否意味着我只能加入message.id? 非常感谢!