保存到新集群 returns 错误

Saving to new cluster returns error

我正在 xtend/Java

中动态创建集群
for (int i : 0 ..< DistributorClusters.length) {
    val clusterName = classnames.get(i) + clusterSuffix;
    database.command(
                new OCommandSQL('''ALTER CLASS «classnames.get(i)» ADDCLUSTER «clusterName»''')).execute();
        }

然后创建我添加 oRole 并将安全性授予新的 oRole

val queryOroleCreation = '''INSERT INTO orole SET name = '«clusterSuffix»', mode = 0, inheritedRole = (SELECT FROM orole WHERE name = 'Default')''';
        val ODocument result = database.command(new OCommandSQL(queryOroleCreation)).execute();
        for (int i : 0 ..< classnames.length) {
            database.command(
                new OCommandSQL(
                    '''GRANT ALL ON database.cluster.«classnames.get(i)»«clusterSuffix» TO «clusterSuffix»''')).
                execute();
        }

最后,我尝试将 JsonObject 保存到新创建的集群之一。我检查了数据库,集群存在。

        val doc = new ODocument();
        doc.fromJSON(jsonToSave.toString());

        val savedDoc = database.save(doc, "ClassName"+clusterSuffix);
        database.commit();

但是Orient returns出现以下错误:

SEVERE: java.lang.IllegalArgumentException: Cluster name 'cluster:ClassNameclusterSuffix' is not configured

我的问题: 是什么导致该异常?你能为创建的新集群添加价值吗?

编辑

doc 对象包含对其他 类 的引用。即:

{
    @class:"Customer",
    @version:0,
    name:"Kwik-E-Mart",
    user : {
        @class:"User",
        @version:0,
        username: "Apu",
        firstName:"Apu",
        lastName:"Nahasapeemapetilon"
    }
}

用户在默认集群中创建,但 customer 抛出异常。

您应该删除 "cluster:" 部分。该方法的第二个参数是"Name of the cluster where to save",不需要任何特殊的前缀。

所以:

val savedDoc = database.save(doc, "ClassName"+clusterSuffix);

应该就可以了

我发现使用查询效果很好source

以下代码在第一次尝试时有效:

val query = '''INSERT INTO ClassNameCLUSTER «"ClassName"+clusterSuffix» CONTENT «jsonToSave.toString()»'''
val ODocument savedDoc = database.command(new OCommandSQL(query)).execute();