Я динамически создаю кластер в 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
выдает исключение.