2016-01-05 3 views
1

Я заинтересован в параметризации Gremlin Query в Java-коде, как и в случае SQL-запроса с использованием PreparedStatement (пример: statement.setString (int, String), statement.setInt (int, int)).Как параметризовать запрос Gremlin в Java?

Пожалуйста, дайте мне знать, можем ли мы делать такие вещи в Java для запроса Гремлина.

Заранее спасибо.

С уважением, Камаль

ответ

1

Проверить это на https://github.com/tinkerpop/rexster/wiki/RexPro-Java

Когда это возможно, параметризировать скрипты Gremlin, так как это приводит к повышению общей производительности. Приведенный выше пример может быть сделан как параметризованный запрос следующим образом:

RexsterClient client = RexsterClientFactory.open("localhost", "tinkergraph"); 
List<Map<String, Object>> results = client.execute("g.v(start).map", 
new HashMap<String, Object>(){{ 
    put("start", 1); 
}}); 
Map<String, Object> map = results.get(0); 
System.out.println(map.get("name")); 

Akshaya

+0

Hi Акшайя, Большое спасибо за ваш ответ. –

+0

Привет, Акшайя, Большое спасибо за ваш ответ. Но это не решает мое требование. Поскольку эта параметризация работает для 'gv (start) .map', но если я изменю ее на 'gv (1) .map' ее не работает, а также параметризацию для запросов типа 'g = rexster.getGraph (\ geograph \)) ; gVmap ('1', '2', '3') 'не работает (здесь я хочу заменить 1,2 и 3 соответствующим свойством PropertyKey). Спасибо, –

+0

Вы можете передать «Список» в качестве аргумента, но я думаю, вам придется вручную преобразовать это в свой скрипт в массив для вызова функции «map()». У меня такое чувство, что передача массива 'String' просто преобразует его в' List', так что вам нужно будет сделать преобразование (но, возможно, стоит попробовать). –

2

Для тех, кто ищет ответ здесь для Titan 1.x и TinkerPop 3.x:

gremlin> cluster = Cluster.open() 
==>localhost/127.0.0.1:8182 
gremlin> client = cluster.connect() 
==>org.apache.tinkerpop.gremlin.dr[email protected] 
gremlin> client.submit("g.V(start).valueMap(m)",[start:1L, m:(['name','age'] as String[])]).all().get() 
==>result{object={name=[marko], age=[29]} class=java.util.HashMap}