2017-03-19 5 views
0

J'essaie de créer un document avec une propriété @Id différente de String, tout fonctionne très bien. Ma question est la façon dont le document est stocké dans le seau, malheureusement il préfixe avec le nom de la classe:Spring Data Couchbase Identifiant de l'objet

ActorKey(key=d7471027-4bd1-40a3-8e29-5249f45beed4)

{ 
    "name": "Emma Watson", 
    "_class": "com.guilherme.miguel.domain.Actor" 
} 

Y at-il un moyen de stocker l'identifiant comme si elle était simple String ? Ce est d'éviter les problèmes dans les requêtes simples (requêtes simples me forcer à utiliser 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> { 
} 

Répondre

0

Le SDK Couchbase sous-jacente utilise String comme identifiant de document, de sorte que ressort données Couchbase appellera toString() sur vos objets clés. Ce que vous voyez est le résultat de la méthode Lombok-generatedtoString() (une génération qui fait partie de l'annotation @Data).

Remplacez simplement explicitement toString() dans ActorKey!