2014-10-27 63 views
0

我有一個名爲User的域類。它採用的MyUserId一個對象作爲IdSpring MongoRepository查詢將_class字段添加到查詢

@Document(collection = "users") 
public class User implements Serializable { 
    @Property 
    @Id 
    private MyUserId id; 
    @Version 
    private Integer version; 

    private String firstName; 
// Setters, getters 
} 

MyUserId類:

public class MyUserId implements Serializable{ 
    @Property 
    private String userId; 
    @Property 
    private String sampleId; 
// setters, getters 
    } 

裏面我蒙戈,文件越來越存儲爲{_id:{userId:....., sampleId:....}, <more fields here>}

我userRepository是這樣的:

public interface UserRepository extends MongoRepository<User, MyUserId> { 
    @Query("{'_id': {$in: ?0}}") 
    List<User> findByUserIds(Collection<MyUserId> userIds); 
} 

當我查詢我的userRepository,該查詢被解僱爲:

{_id: {$in: [ {_class:"com.sampleuser.MyUserId", userId:"....", sampleId:"...."}, {_class:"com.sampleuser.MyUserId", userId:"....", sampleId:"...."}]}} 

很明顯,它的加入_class領域,而查詢,但不能同時存儲。有人可以告訴我們如何解決這個問題嗎?這導致我的所有查詢都失敗。謝謝!

回答

1

使用@Query和複雜的id類型時,實際上存在一個問題。我建議使用定製存儲庫實現,直到解決了DATAMONGO-1078

在自定義實現,你可以使用MongoTemplate以某種方式執行這樣的查詢

@Override 
public List<User> findByUserIds(Collection<MyUserId> userIds) { 
    return template.find(query(where("id").in(userIds)), User.class); 
} 
+0

感謝確認這是一個問題,我是越來越有。 – 2014-11-03 15:46:53