Я использую встроенную базу данных Neo4J с OGM и создаю службу базы данных в каталоге через OGM SessionFactory :
Configuration configuration = new Configuration.Builder()
.uris("C:\neoEmbeddedDb")
.build();
factory = new SessionFactory(configuration, packages);
Это работает хорошо, но теперь я хочу просмотретьсоздал базу данных с помощью браузера Neo4J.Когда я читаю, мне нужно открыть свою базу данных через Bolt, чтобы иметь к ней доступ.
В документации Neo4J Embedded они используют GraphDatabaseService и просто указываютдополнительный болт-драйвер для предоставления базы данных:
GraphDatabaseService graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder( DB_PATH )
.setConfig( bolt.type, "BOLT" )
.setConfig( bolt.enabled, "true" )
.setConfig( bolt.address, "localhost:7687" )
.newGraphDatabase();
Но, к сожалению, у меня нет этой опции при использовании OGM SessionFactory.Я пытался вызвать Configuration Builder с несколькими URI:
Configuration configuration = new Configuration.Builder()
.uris(new String[]{this.databasePath.toUri().toString(), "localhost:7687"})
.build();
Но, похоже, он игнорирует первый URI (расположение моего файла) и вместо этого создает базу данных во временном расположении.
выходные данные отладки записывают в консоль соответствующее сообщение:
Creating temporary file store: file:/C:/Temp/neo4jTmpEmbedded.db2736315981519762299/database/
Может кто-нибудь объяснить, как я могу представить свою встроенную базу данных с помощью болта или получить к ней доступ с помощью браузера Neo4J?
Большое спасибо!
Решение
С помощью meistermeier я смог создать настоящую EmbeddedDatabase и подключить к ней мой OGM.Я добавил параметры подключения к болту, как я нашел их в документации.Теперь база данных создана и правильно выставлена через Bolt.Я могу подключиться к своему Neo4J Desktop Windows Browser.
Окончательный код:
BoltConnector boltConnector = new BoltConnector(_BOLT_CONNECTION_STRING);
GraphDatabaseService graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder(databasePath.toFile())
.setConfig(boltConnector.type, "BOLT" )
.setConfig(boltConnector.enabled, "true" )
.setConfig(boltConnector.listen_address, "localhost:7687" )
.setConfig(GraphDatabaseSettings.auth_enabled, "false")
.newGraphDatabase();
registerShutdownHook(graphDb);
// connect OGM session factory to embedded database
EmbeddedDriver driver = new EmbeddedDriver(graphDb);
final String[] packages = new String[] {
"Entity domain package",
};
factory = new SessionFactory(driver, packages);