SpringData MongoDB findBy嵌套属性(非ID)使用DBRef

时间:2016-05-02 18:21:27

标签: java spring-data-mongodb

使用SpringData MongoDB(spring-data-mongodb 1.9.1.RELEASE)我需要根据@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?

1 个答案:

答案 0 :(得分:4)

无法在MongoDB本身中查询DBRef的非id属性。因此,使用Spring Data MongoDB无法实现这一点。