2013-01-11 4 views
2

Я создал класс пользовательского класса так:Spring-хранилище данных 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); 
} 

Весенние журналы этого (для обоих запросов): org.springframework.data.mongodb.core.MongoTemplate [DEBUG] найти с помощью запроса: { "credentials" : { "login" : "test" , "password" : "test"}} полей: нуль для класса: класс xxx.User в коллекции: пользователь

И ничего не найдено ... Кажется, что ничего не найдено, потому что атрибут «_class» не написан, это запрос. Я думаю, что хороший запрос должен быть: { "credentials" : {"_class":"xxx.LoginPassword", "login" : "test" , "password" : "test"}}

Что-то я делаю не так? Я что-то упускаю ?

Благодаря

Я использую Spring MVC 3.2.0, весна-данные-Викисклада ядро ​​1.4.0, весна-данных MongoDB 1.1.1 и Монго-Java-драйвер 2.10.1 (я обновил все библиотеки до последней версии, чтобы быть уверенным, что это не ошибка уже исправлена, но без успеха)

ответ

2

Вы пытались добавить @Document (collection = "users") над своим интерфейсом ICredentials?

1

Это происходит, когда вы не используете аннотации для документа

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

    @Id 
    private String id; 

    //getter and setters 
} 
Смежные вопросы