在couchbase中存储文档时,我通常使用前缀模式。例如,用户文档可能有一个像" user :: myusername"并且订单文档可能具有" order :: 1"的密钥。
我对spring数据不熟悉,并且没有办法轻松地使用这些前缀。我可以在我的对象中指定一个字段,如:
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");
...
如果有某种方法让存储库自动使用幕后的前缀,那将是非常好的。
答案 0 :(得分:0)
不确定你是否在这里提问。 Spring-data没有任何内置机制来执行您想要的操作。如果你使用带有couchbase的Spring-cache,这是可能的,因为你可以使用这样的命名模式来注释你的缓存方法,例如,在spring cache中你可以在持久化方法上做这样的事情:
@Cacheable(value = "myCache", key = "'user_login::'+#id")
public UserLogin getUserLogin()
显然,这是Spring缓存而不是spring数据,但是在同一个库中都支持它们。