bfour bfour - 7 months ago 53
Java Question

How do I create an auto-incrementing index/a sequence for an OrientDB database using the Java Document API?

I am using OrientDB with Java via its Document API. I have a simple Class called

items
which has an attribute
ID
. I explicitly declare the schema like this:

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


and then create an index on
ID
:
CREATE INDEX items.ID ON items (ID) UNIQUE
.

Now when I create a new item (something like
ODocument doc = new ODocument("items")
etc.), I would like the ID for the new item to be generated on the database (something like a sequence in RDBMS).
How do I do this with the Java Document API for OrientDB?

Answer

OrientDB doesn't support serial (we've an issue for that), so you can manage your own counter in this way (example using SQL):

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

And then every time you need a new number you can do:

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

This works in a SQL batch in this way:

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

By using Java you can make the same: create singleton class "Counters" that everytime increment the document value and save it.

Comments