Spring 数据 Couchbase 对象 ID
Spring Data Couchbase Object id
我正在尝试创建一个 @Id
属性 不同于 String
的文档,一切正常。我的问题是文档存储在 Bucket 中的方式,不幸的是它以 Class 名称作为前缀:
ActorKey(key=d7471027-4bd1-40a3-8e29-5249f45beed4)
{
"name": "Emma Watson",
"_class": "com.guilherme.miguel.domain.Actor"
}
有没有办法像简单的 String
一样存储 ID?
这是为了避免普通查询中的问题(简单查询将迫使我使用 ActorKey(key=xxxxxxxxxxx))
Actor.java:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
public class Actor {
@Id
private ActorKey key;
private String name;
}
ActorKey.java:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ActorKey implements Serializable {
private String key;
}
ActorRepository.java
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "actor")
public interface ActorRepository extends CouchbaseRepository<Actor, ActorKey> {
}
底层 Couchbase SDK 使用 String
作为文档标识符,因此 spring-data-couchbase 将在您的关键对象上调用 toString()
。您看到的是 Lombok-generated toString()
方法的结果(生成是 @Data
注释的一部分)。
只需显式覆盖 ActorKey
中的 toString()
!
我正在尝试创建一个 @Id
属性 不同于 String
的文档,一切正常。我的问题是文档存储在 Bucket 中的方式,不幸的是它以 Class 名称作为前缀:
ActorKey(key=d7471027-4bd1-40a3-8e29-5249f45beed4)
{
"name": "Emma Watson",
"_class": "com.guilherme.miguel.domain.Actor"
}
有没有办法像简单的 String
一样存储 ID?
这是为了避免普通查询中的问题(简单查询将迫使我使用 ActorKey(key=xxxxxxxxxxx))
Actor.java:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document
public class Actor {
@Id
private ActorKey key;
private String name;
}
ActorKey.java:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ActorKey implements Serializable {
private String key;
}
ActorRepository.java
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "actor")
public interface ActorRepository extends CouchbaseRepository<Actor, ActorKey> {
}
底层 Couchbase SDK 使用 String
作为文档标识符,因此 spring-data-couchbase 将在您的关键对象上调用 toString()
。您看到的是 Lombok-generated toString()
方法的结果(生成是 @Data
注释的一部分)。
只需显式覆盖 ActorKey
中的 toString()
!