Невозможно сохранить узел в Neo4j при загрузке Spring - PullRequest
3 голосов
/ 30 мая 2020

Я пытаюсь сохранить узел в базе данных Neo4j с помощью Spring загрузки и получаю следующее исключение:

java.lang.IllegalArgumentException: Class class com.test.neo4j.model.Company is not a valid entity class. Please check the entity mapping.
at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:77) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:51) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:480) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65]

Ниже мой класс Entity:

package com.test.neo4j.model;

import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;

@NodeEntity
public class Company {
    @Id
    private String id;
    private String name;
    public Company() {}

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Ниже мой репозиторий :

package com.test.neo4j.repository;

import org.springframework.data.neo4j.repository.Neo4jRepository;

import com.test.neo4j.model.Company;

public interface CompanyRepository extends Neo4jRepository<Company, String>{

}

Я Autowiring репо в моем сервисе и звоню save с его помощью. Теперь я просмотрел другие ответы и убедился в следующем:

  • Имя пакета не содержит символов верхнего регистра
  • Класс модели имеет конструктор по умолчанию
  • id явно задано в службе

Я что-то еще упустил?

1 Ответ

1 голос
/ 07 июня 2020

Класс Company не является частью сканирования классов, инициированного при запуске приложения. Это может иметь разные причины:

  1. Вы используете автозапуск Spring Data Neo4j без какой-либо специальной конфигурации для сканирования пакетов. В результате будут просканированы только классы сущностей в этом пакете и «подпакеты».
  2. Вы вручную настроили bean-компонент SessionFactory, и данный пакет не соответствует («sub» -) пакету вашего класса находится в дюймах
...