Spring-data mongodb存储库和继承

时间:2013-01-11 18:26:52

标签: spring mongodb spring-data-mongodb

我创建了一个类用户类:

public class User {
    /**
     * The list of roles for the user
     */
    private List<String> roles;
    /**
     * The login information
     */
    private ICredentials credentials;

    /*---- the constructors and getters/setters are omitted ---*/
}

ICredentials界面:

public interface ICredentials {
}

一种实施方式:

public class LoginPassword implements ICredentials {
    /**
     * The login of the user
     */
    protected String login;

    /**
     * The password of the user
     */
    protected String password;

    /*---- the constructors and getters/setters are omitted ---*/
}

现在,我已经创建了一个存储库,用于从凭证中查找用户:

public interface MongoUserRepository extends MongoRepository<User, String> {
    List<User> findByCredentials(ICredentials credentials);
    List<User> findByCredentialsEquals(ICredentials credentials);
}

Spring记录这个(对于两个请求):     org.springframework.data.mongodb.core.MongoTemplate [DEBUG]使用查询查找:{ "credentials" : { "login" : "test" , "password" : "test"}} fields:null for class:class xxx.User in collection:user

它没有找到任何东西......似乎它没有找到任何东西,因为“_class”属性没有写入请求。我认为好的要求应该是: { "credentials" : { "_class":"xxx.LoginPassword" , "login" : "test" , "password" : "test"}}

我做错了什么?我错过了什么吗?

由于

我使用spring mvc 3.2.0,spring-data-commons-core 1.4.0,spring-data-mongodb 1.1.1和mongo-java-driver 2.10.1(我已将所有库更新到最新版本到确保它不是已修复的错误但没有成功)

2 个答案:

答案 0 :(得分:2)

您是否尝试在ICredentials界面上添加@Document(collection =“users”)?

答案 1 :(得分:1)

当您不为文档使用注释时会发生

@Document(collection = "example")
public class Example{

  @Id
  private String id;

  //getter and setters
}