如何使用 java 在 neo4j 中的数据库之间切换

How to switch between databases in neo4j using java

所以我正在使用 neo4j-enterprise 版本加载 docker。

version: '3'
services:
  neo4j:
    image: neo4j:4.3.2-enterprise
    hostname: neo4j
    container_name: neo4j
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
      - NEO4J_dbms_memory_heap_maxSize=1G
      - NEO4JLABS_PLUGINS=["apoc"]
      - NEO4J_AUTH=neo4j/test
      - NEO4J_apoc_import_file_enabled=true
      - NEO4J_dbms_security_procedures_whitelist= apoc.*
      - NEO4J_dbms_security_procedures_unrestricted= apoc.*

我正在使用螺栓起子连接 neo4j。

public Neo4jSessionFactory(@ConfigProperty(name = "quarkus.neo4j.uri")String databaseUri,
                               @ConfigProperty(name = "quarkus.neo4j.authentication.username")String username,
                               @ConfigProperty(name = "quarkus.neo4j.authentication.password")String password) {
        Configuration neoConfig = new Configuration.Builder().uri(databaseUri**{bolt://localhost:7687}**).credentials(username, password)
                .useNativeTypes().build();
        sessionFactory = new SessionFactory(neoConfig, PACKAGES);
        LOGGER.info("Connection with Neo4j is successful");
    }

我可以使用 "CREATE DATABASE <name>" 命令创建一个单独的数据库。

但是我想 运行 我的查询跨新创建的数据库。 我可以简单地调用 "session.query("cypher_query_to_insert")" 数据将加载到默认数据库 neo4j。 我们可以使用 :use <database name> 在浏览器中的数据库之间切换。 但是,当 cmd 在 session.query(":use <database_name>") 中时 运行 我收到以下错误:

Data Insertion failed. Cause: org.neo4j.driver.exceptions.ClientException: Invalid input ':': expected (line 1, column 1 (offset: 0)) ":use neo4j"

如果有人知道解决方案请告诉我。

创建会话时,可以通过 SessionConfig.Builder 构建的数据库名称传递 SessionConfig 实例:https://neo4j.com/docs/api/java-driver/current/org/neo4j/driver/SessionConfig.Builder.html#withDatabase-java.lang.String-.