Я создал проект Maven с использованием spring-data-neo4j. Я также установил автономное Neo4j Server Community Edition 2.3.3. Я пытаюсь сохранить некоторые объекты Vertex в базе данных, а затем просто получить их, чтобы проверить, что все работает нормально. Затем я хотел бы иметь возможность открыть созданный db на автономном сервере для лучшей визуализации. Я использую в качестве зависимостей:Данные не сохраняются при использовании удаленного сервера Neo4j с данными Spring Neo4j
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Класс конфигурации:
@Configuration
@ComponentScan("neo4j.example")
@EnableAutoConfiguration
@EnableNeo4jRepositories("neo4j.example.repository")
public class App extends Neo4jConfiguration {
public App() {
System.setProperty("username", "neo4j");
System.setProperty("password", "root");
}
@Override
public SessionFactory getSessionFactory() {
return new SessionFactory("neo4j.example.model");
}
@Override
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}
@Override
public Neo4jServer neo4jServer() {
return new RemoteServer("http://localhost:7474");
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
Мой NodeEntity выглядит следующим образом:
@NodeEntity
public class Vertex {
private String name;
@GraphId
private Long id;
@Relationship(type = "PAIRS_WITH", direction = "UNDIRECTED")
public Set<Vertex> teammates;
public Vertex() { }
// getters, setters, equals, toString
}
хранилища:
@Repository
public interface VertexRepository extends GraphRepository<Vertex> {
Vertex findByName(String name);
List<Vertex> findByTeammatesName(String name);
}
Службы :
@Service
public class VertexServiceImpl implements VertexService {
@Autowired
private VertexRepository vertexRepository;
@Override
@Transactional
public Vertex create(Vertex vertex) {
return vertexRepository.save(vertex);
}
@Override
@Transactional
public Iterable<Vertex> findAll() {
return vertexRepository.findAll();
}
//....
}
Тогда у меня есть контроллер с двумя простыми методами, чтобы сохранить вершину, а затем запросить базу данных.
@RestController
@RequestMapping("/api/")
public class GraphController {
@Autowired
VertexService vertexService;
@RequestMapping(value = "addvertex", method = RequestMethod.GET)
public void add() {
Vertex v = new Vertex();
v.setId(1l);
v.setName("name");
Vertex v2 = new Vertex();
v2.setId(2l);
v.worksWith(v2);
vertexService.create(v);
}
@RequestMapping(value = "all", method = RequestMethod.GET)
public Iterable<Vertex> getAll() {
return vertexService.findAll();
}
}
Когда я сохраняю вершину в db, ошибки не возникает. Когда я вызываю/все db пуст. Я проверил messages.log и не было никаких исключений ... последние строки:
2016-03-26 14:25:15.716+0000 INFO [o.n.k.i.DiagnosticsManager] Interface Microsoft Wi-Fi Direct Virtual Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000:
2016-03-26 14:25:15.716+0000 INFO [o.n.k.i.DiagnosticsManager] --- INITIALIZED diagnostics END ---
2016-03-26 14:25:15.747+0000 INFO [o.n.k.i.DiagnosticsManager] --- STOPPING diagnostics START ---
2016-03-26 14:25:15.747+0000 INFO [o.n.k.i.DiagnosticsManager] --- STOPPING diagnostics END ---
2016-03-26 14:25:15.747+0000 INFO [o.n.k.i.f.GraphDatabaseFacade] Shutdown started
Любая помощь в полной мере оценена!
Вложенная база данных не использует то же место, что и сервер. Пароль для сервера - root, а пользователь - neo4j, как я указал в App приложения конфигурации. Я прокомментировал часть встроенного db. Но у меня такое же поведение. Никакие данные не записываются в db. Должен ли я каким-либо образом указать в коде имя и расположение каталога, который использует сервер? Или достаточно указать его на localhost: 7474 и запустить сервер, когда я попытаюсь написать ему, как у меня сейчас? –