2013-10-09 5 views
4

При создании индекса через SQL в orientDB, я могу установить его на автоматический, выполнив:OrientDB - Автоматическое создание индекса с Java

create index MyClass.my_field on MyClass (my_field) unique 

Как добавить записи в БД, мой индекс обновляется. Тем не менее, если я создать индекс с Java, выполнив следующие действия:

OClass target = db.getMetadata().getSchema().getOrCreateClass("MyClass"); 
target.createProperty("my_field", OType.STRING); 
target.createIndex("MyClass.my_field", OClass.INDEX_TYPE.UNIQUE, "my_field"); 
db.getMetadata().getSchema().save(); 

Мой индекс успешно создан, но не обновляется автоматически. Есть ли какой-нибудь флаг, который я могу установить для создания индекса, чтобы сообщить ему об обновлении при сохранении новых записей?

ответ

1

Ну, это не большое решение, но я в конечном итоге делает:

String sql = "create index MyClass.my_field on MyClass (my_field) unique" 
OCommandSQL createIndex = new OCommandSQL(sql); 
Object done = db.command(createIndex).execute(new Object[0]); 

и она работает. Я никогда не буду любить писать сырые sql в моем коде, хотя ...

0

Код выше работает для меня на orientdb 1.7.9, то есть индекс, созданный изначально, действительно автоматически обновляется, как и следовало ожидать.

+0

Как я могу проверить, будет ли индекс автоматически обновляться из моего кода? – jimijazz

Смежные вопросы