Spring Data Neo4j не сопоставляет поля класса со свойствами узла

У меня есть репозиторий

@Repository
public interface PointOfInterestRepository extends GraphRepository<Poi> {
    // currently empty
}

без определенных пользовательских методов. Поэтому я использую подобные save(T... entities), которые предопределены.

И у меня есть класс Poi следующим образом

@NodeEntity(label = "PointOfInterest")
public class Poi {

    @JsonIgnore
    @GraphId
    Long neo4jId;

    @JsonManagedReference("node-poi")
    @JsonProperty("node")
    @Relationship(type = "BELONGS_TO", direction = Relationship.UNDIRECTED)
    private Node node;

    @JsonProperty("id")
    @Property(name = "poiID")
    private final String id;

    @JsonProperty("uris")
    @Property(name = "uris")
    private final Set<URI> correspondingURIs = new HashSet<>();

   /* Some more stuff I skip here*/
}

с геттерами для полей.

В настоящее время я могу сохранять такие Pois в neo4j и извлекать их обратно, но когда я пытаюсь работать с этими узлами в базе данных через шифрование, оказывается, что поля не сопоставлены со свойствами neo4j.

Я думал, что spring-data-neo4j преобразует поля моего класса в свойства графика neo4j. Я ошибаюсь?

Примечание. Вызовы save работают очень хорошо. После этого я могу видеть узлы в базе данных, а последующий вызов findAll() вернет мне все сохраненные узлы (Pois) со всеми правильными значениями. Но почему-то в базе данных я не вижу никаких свойств/полей.


person Matthias    schedule 25.03.2016    source источник
comment
Не уверен, что ваш фактический вопрос. Что вы имеете в виду под Но почему-то в базе данных я не вижу никаких свойств/полей. и но когда я пытаюсь работать с этими узлами в базе данных через шифрование, оказывается, что поля не сопоставлены со свойствами neo4j. ???   -  person Michael Hunger    schedule 26.03.2016
comment
Когда я вхожу в neo4j и пытаюсь выполнить шифрованные запросы, я не могу получить доступ к свойствам, потому что их, кажется, нет, это поможет вам?   -  person Matthias    schedule 26.03.2016
comment
То есть вы имеете в виду, что через браузер neo4j вы видите узлы, но нет свойств? А через SDN можно запросить и посмотреть свойства? Извините, что задаю такой же вопрос, но трудно понять, что это такое   -  person Luanne    schedule 29.03.2016
comment
@ Луанн, да, ты понял это.   -  person Matthias    schedule 29.03.2016
comment
Вы используете 4.0.0.RELEASE? Можете ли вы попробовать удалить аннотацию @JsonProperty и посмотреть, решит ли это проблему?   -  person Luanne    schedule 29.03.2016
comment
@Luanne, да, я использую 4.0.0.RELEASE, и нет, похоже, это не решает проблему.   -  person Matthias    schedule 29.03.2016
comment
В качестве проверки работоспособности, выполнение следующего запроса в браузере возвращает только пустые коллекции? MATCH (n:PointOfInterest) RETURN KEYS(n) LIMIT 10;   -  person cybersam    schedule 29.03.2016
comment
@cybersam да, это так. Если я загружу три PointOfInterest, я увижу три пустых массива []   -  person Matthias    schedule 29.03.2016


Ответы (1)


Проблема в последних полях. SDN не сможет записать значения обратно в объект при загрузке из графа, поскольку эти поля являются окончательными (и SDN будет использовать только конструктор без аргументов по умолчанию), и поэтому окончательные поля не поддерживаются. Удаление финала должно исправить это.

person Luanne    schedule 30.03.2016