SDN 4 Session.query не работает для @QueryResult

В моем проекте SDN 4 у меня есть @QueryResult POJO:

@QueryResult
public class WeightedDecision {

    private Decision decision;

    private double weight;

    public Decision getDecision() {
        return decision;
    }

    public void setDecision(Decision decision) {
        this.decision = decision;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

}

И множество методов репозитория Spring Data Neo4j, которые отлично работают с этим результатом запроса WeightedDecision.

Прямо сейчас я пытаюсь вручную создать запрос Cypher, в результате которого я собираюсь вернуть список WeightedDecision.

Я использую для этой цели следующий метод:

return (List<WeightedDecision>) session.query(WeightedDecision.class, cypher, parameters);

мой запрос Cypher выглядит так:

MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User) WHERE id(parentD) = {decisionId} OPTIONAL MATCH (childD)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c:Criterion) WHERE id(c) IN {criteriaIds} WITH childD, ru, u, vg.avgVotesWeight as weight  RETURN childD AS decision, ru, u, sum(weight) as weight ORDER BY weight DESC

но результат session.query в этом случае пуст.

Если я изменяю параметры метода session.query на:

return (List<WeightedDecision>) session.query(Decision.class, cypher, parameters); 

где Decision — объект узла, все работает нормально и возвращает список решений.

Как заставить его работать с типом @QueryResult?


person alexanoid    schedule 12.08.2016    source источник


Ответы (1)


@QueryResult не является концепцией OGM и, следовательно, не поддерживается сеансом OGM.

Он поддерживается только для запросов к репозиторию.

person Luanne    schedule 13.08.2016
comment
Как выполнить этот запрос из кода, чтобы получить @QueryResult? Есть ли шанс повторно использовать логику из запросов к репозиторию (я имею в виду логику под капотом запроса к репозиторию), чтобы сделать это? - person alexanoid; 13.08.2016