我在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返回以下错误:
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
会抛出异常。
答案 0 :(得分:0)
您应该删除“cluster:”部分。该方法的第二个参数是“要保存的集群的名称”,它不需要任何特殊的前缀。
所以:
val savedDoc = database.save(doc, "ClassName"+clusterSuffix);
应该正常工作
答案 1 :(得分:0)
我发现使用查询工作正常source。
以下代码首次尝试使用:
val query = '''INSERT INTO ClassNameCLUSTER «"ClassName"+clusterSuffix» CONTENT «jsonToSave.toString()»'''
val ODocument savedDoc = database.command(new OCommandSQL(query)).execute();