Spring Data查询两个文档

时间:2015-11-02 13:15:46

标签: spring mongodb spring-data spring-data-mongodb

我的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? 非常感谢!

0 个答案:

没有答案