2016-05-02 61 views
1

使用SpringData MongoDB(spring-data-mongodb 1.9.1.RELEASE)我需要基於由@DBRef鏈接的用戶角色來查詢用戶。SpringData MongoDB findBy嵌套屬性(非ID)使用DBRef

用戶

@Document(collection = "user") 
public class User { 
    private String userName; 
    private boolean isActive; 
    @DBRef 
    private List<Role> roles; 
} 

角色

@Document(collection = "role") 
public class Role { 
    private String roleName; 
    private String description; 
    private long roleNum; 
} 

用戶系統信息庫

@Repository 
public interface UserRepository extends MongoRepository<User, String> { 

    public User findByUserName(String username); 

    @Query(value = "{'roles.$roleName' : ?0}") 
    public List<User> findByRolesRoleName(String roleName); 
} 

一個question similar已經問過,但沒有回答。使我認爲可能不支持這種類型的findBy。

這似乎相當直接,但findByRolesRoleName的結果始終是一個空列表(size = 0)。

有沒有人得到一個findBy這種關係正常工作?

回答

3

在MongoDB本身中,無法查詢DBRef的非id屬性。因此使用Spring Data MongoDB不可能這樣做。

+0

這是我的懷疑。感謝您的驗證。 – bwoodson