2017-10-11 4 views
2

J'utilise le pilote java pour ArangoDB. J'ai un tableau de JSON dans une variable String et je veux qu'il soit inséré dans une table. J'utilise la requête suivanteCollection Bind dans le pilote java pour arangoDB

for r in @fromCollection insert r into @targetCollection 

En insert d'interface web va bien, mais en Java je suis face à des problèmes avec la liaison de ces 2 variables -

1553 - ERROR_QUERY_BIND_PARAMETER_TYPE 
Will be raised when a bind parameter has an invalid value or type 

Pouvez-vous me aider avec les noms de collections de liaison en tant que variables dans ArangoDB?

+0

Ne pas oublier de marquer le dessous comme répondez, et si ce n'est pas le cas, commentez pourquoi. –

Répondre

2

Je ne sais pas comment votre variable JSON String joue un rôle dans cette requête.

Lorsque vous souhaitez insérer les documents JSON inclus dans votre variable de chaîne, vous pouvez utiliser la méthode importDocuments(String) pour que:

ArangoDB arango = new ArangoDB.Builder().build(); 
arango.db().collection("myCollection").importDocuments(jsonArray); 

liés à votre problème avec votre requête:

Un type spécial de liaison Un paramètre existe pour l'injection de noms de collection. Ce type de paramètre de liaison a un nom préfixé par un symbole @ supplémentaire (ainsi, lors de l'utilisation du paramètre bind dans une requête, deux symboles @ doivent être utilisés). Pour plus d'informations sur les paramètres de grippage jeter un oeil here

Votre requête doit regarder:

for r in @@fromCollection insert r into @@targetCollection 

En Java, il semble comme suit:

ArangoDB arango = new ArangoDB.Builder().build(); 
Map<String, Object> bindVars = new HashMap<>(); 
bindVars.put("@fromCollection", "..."); 
bindVars.put("@toCollection", "..."); 
arango.db().query("for r in @@fromCollection insert r into @@targetCollection", bindVars, null, BaseDocument.class)