Java Spring数据库对象id

Java Spring数据库对象id,java,spring-boot,couchbase,spring-data-couchbase,Java,Spring Boot,Couchbase,Spring Data Couchbase,我正在尝试创建一个@Id属性不同于String的文档,一切都很好。我的问题是文档在Bucket中的存储方式,不幸的是,它以类名作为前缀: ActorKeykey=d7471027-4bd1-40a3-8e29-5249f45beed4 有没有一种方法可以像存储简单字符串一样存储id? 这是为了避免普通查询中的问题简单查询将迫使我使用ActorKeykey=xxxxxxxxxx Actor.java: ActorKey.java: ActorRepository.java 底层Couchbase

我正在尝试创建一个@Id属性不同于String的文档,一切都很好。我的问题是文档在Bucket中的存储方式,不幸的是,它以类名作为前缀:

ActorKeykey=d7471027-4bd1-40a3-8e29-5249f45beed4

有没有一种方法可以像存储简单字符串一样存储id? 这是为了避免普通查询中的问题简单查询将迫使我使用ActorKeykey=xxxxxxxxxx

Actor.java:

ActorKey.java:

ActorRepository.java


底层Couchbase SDK使用字符串作为文档标识符,因此spring data Couchbase将在关键对象上调用toString。您看到的是toString方法的结果,该方法是@Data注释的一部分

只需显式重写ActorKey中的toString

{
  "name": "Emma Watson",
  "_class": "com.guilherme.miguel.domain.Actor"
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
public class Actor {

  @Id
  private ActorKey key;
  private String name;

}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ActorKey implements Serializable {

  private String key;

}
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "actor")
public interface ActorRepository extends CouchbaseRepository<Actor, ActorKey> {
}