Scala / Neo4J - Невозможно получить значения ключей внутри карты neo4j, используя scala - PullRequest
0 голосов
/ 16 января 2020

У меня запрос, возвращающий следующее:

RETURN COLLECT(DISTINCT({itemNode: ruleAsset.aid, rules: rule, sourceRules: sourceRule})) AS itemRules

Мне удалось получить значение itemNode. Теперь я хочу получить значения правила и sourceRule, но мне пока не удалось этого сделать.

val itemRulesChain = storeAPI.NeoQuery(getItemsWithRulesAndSourceRules).resultList().map {
  result =>
    result.map {
      record =>
        val itemRules = record.get("itemRules")
        val ruleRecord = record.get("itemRules")
        val sourceRuleRecord = record.get("itemRules")
        itemRules.asList(Values.ofMap).asScala.map {
          itemRuleChain =>
            val test = itemRuleChain.get("rules") // is of type AnyRef - I need it to be of type Node to pass it to the neoFormat.neoResultToModel() call
            val itemAID = AID.fromString(itemRuleChain.get("itemNode").toString)
            val rule = if(ruleRecord.isNull) {None} else Option(neoFormat.neoResultToModel(ruleRecord.asNode, storeAPI.groupRecordRelationshipResults(record, "rs", "pn"))) // should return type Rule
            val sourceRule = if(sourceRuleRecord.isNull) {None} else Option(neoFormat.neoResultToModel(sourceRuleRecord.asNode, storeAPI.groupRecordRelationshipResults(record, "rs", "pn"))) // should return type Rule
            ItemRuleChain(itemAID, rule, sourceRule) // ItemRuleChain(aid:AID, rule :Rule, sourceRule :Rule)
        }.toList
    }
}.map(_.flatten).recover {
  case e: Exception =>
    logger.error(s"Failure in *** : ", e)
    throw e
}

Запрос, переданный NeoQuery, возвращает элемент с его правилами и правилами источника. Я могу легко получить aid правила, как показано в itemAID val. Тем не менее, я не могу получить правило или исходное правило, они просто приводят как None из-за условия оператора if - оно должно получать значения NULL, но откуда? Как получить значения в самом внутреннем блоке кода?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...