ключевые префиксы с документами в репозиториях spring-data-couchbase

Я обычно использую шаблон префикса при хранении документов в кушетке. Например, документ пользователя может иметь такой ключ, как «user::myusername», а документ заказа может иметь ключ «order::1».

Я новичок в spring-data и не вижу способа легко заставить его работать с этими префиксами. Я могу указать поле в своем объекте, например:

public class UserLogin {
    public static final String dbPrefix = "user_login::";
    @Id
    private String id;
    private String username;


.
.
.
    public void setUsername(String username) {
        this.username = username;
        this.id = dbPrefix + this.username;
    }
}

и иметь репозиторий Crud

public interface UserLoginRepo extends CrudRepository<UserLogin, String> {

}

Это нормально, потому что я могу:

...

userLoginRepo.save(login)

UserLogin login = userLoginRepo.findOne(UserLogin.dbPrefix + "someuser");

...

Было бы очень хорошо, если бы был какой-то способ, чтобы репозиторий автоматически использовал префикс за кулисами.


person Jeff S    schedule 09.01.2015    source источник


Ответы (1)


не уверен, что вы задаете вопрос здесь. Spring-data не имеет встроенного механизма, позволяющего делать то, что вы хотите. Если вы используете Spring-кэш с кушеткой, это возможно, поскольку вы можете аннотировать свои кешированные методы с помощью шаблонов именования, например, в кеше Spring вы можете сделать что-то подобное в методе сохранения:

@Cacheable(value = "myCache", key = "'user_login::'+#id")
public UserLogin getUserLogin()

Очевидно, что это кэш Spring, а не данные Spring, однако оба они поддерживаются в одной библиотеке.

person tacree    schedule 22.03.2015