1

在沙发库中存储文档时,我通常使用前缀模式。例如,用户文档可能具有“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");

...

如果有某种方法可以让存储库在幕后自动使用前缀,那就太好了。

4

1 回答 1

0

不确定您是否在这里提出问题。Spring-data 没有任何内置机制来做你想做的事。如果您将 Spring-cache 与 couchbase 一起使用,这是可能的,因为您可以使用这样的命名模式注释缓存的方法,例如,在 spring 缓存中,您可以在持久性方法上执行以下操作:

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

显然,这是 Spring 缓存而不是 Spring 数据,但是两者都在同一个库中受支持。

于 2015-03-22T04:03:46.680 回答