如何使用Java Document API为OrientDB数据库创建自动递增索引/序列?

时间:2014-07-18 02:40:53

标签: java orientdb

我通过Document API使用OrientDB和Java。我有一个名为items的简单类,它有一个属性ID。我明确地声明了这样的架构:

    OSchema schema = db.getMetadata().getSchema();
    OClass itemsClass = schema.createClass("items");
    itemsClass.createProperty("ID", OType.LONG);

然后在ID上创建一个索引:CREATE INDEX items.ID ON items (ID) UNIQUE

现在,当我创建一个新项目(类似ODocument doc = new ODocument("items")等)时,我希望在数据库上生成新项目的ID(类似于RDBMS中的序列)。 如何使用适用于OrientDB的Java Document API进行此操作?

2 个答案:

答案 0 :(得分:6)

OrientDB不支持串行(我们有issue),因此您可以通过这种方式管理自己的计数器(例如使用SQL):

create class counter
insert into counter set name='mycounter', value=0

然后每当你需要一个新号码时,你就可以做到:

update counter incr value = 1 where name = 'mycounter'

这样就可以通过这种方式在SQL批处理中运行:

begin
let $counter = update counter incr value = 1 where name = 'mycounter' return after
insert into items set id = $counter.value, qty = 10, price = 1000
commit

通过使用Java,你可以做同样的事情:创建单个类“计数器”,每次递增文档值并保存它。

答案 1 :(得分:1)

从OrientDB 2.2开始现在支持序列

http://orientdb.com/docs/2.2/Sequences-and-auto-increment.html

相关问题