Ошибка параметра запроса Groovy Query Builder для папок Nexus - PullRequest
0 голосов
/ 30 апреля 2018

Я пишу запрос для получения активов Nexus в Groovy

def tx = repo.facet(StorageFacet).txSupplier().get();
tx.begin();

tx.findAssets(Query.builder()
.where('name like ').param('v2/%')
.build(), [repo]).each { asset ->
log.info("Print - ${asset.name()}");

если я введу параметры 'v2/%' - какой-нибудь путь в Nexus - тогда он будет работать правильно. Если я поставлю некоторую переменную - как это

def item ="abc";
tx.findAssets(Query.builder()
.where('name like ').param('v2/${item}/%')
.build(), [repo]).each { asset ->
log.info("Print - ${asset.name()}");

Я получаю исключение:

"Exception: java.lang.ArrayIndexOutOfBoundsException: Negative array index [-1] too large for array size 0
2018-04-30 18:50:51,105+0000 ERROR [quartz-5-thread-4]  *SYSTEM java.lang.Throwable - java.lang.ArrayIndexOutOfBoundsException: Negative array index [-1] too large for array size 0"

Почему так происходит?

1 Ответ

0 голосов
/ 30 апреля 2018

В вашем примере вам потребуется использовать GString ("v2/${item}/%"), если вы ожидаете подстановку переменной: например,

def item ="abc";
tx.findAssets(Query.builder()
  .where('name like ').param("v2/${item}/%")
  .build(), [repo]).each { asset ->
log.info("Print - ${asset.name()}");
...