db4o目前還沒有unique index/primary key機(jī)制。(5.4)

???? public ? static ? void ?main(String[]?args)? {
????????ObjectContainer?db?
= ?Db4o.openFile( " test.yap " );
????????db.set(
new ?User( " abc " , 234 ));
????????db.set(
new ?User( " abc " , 234 ));
????????ObjectSet
< User > ?list? = ?db.query(User. class );
????????System.out.println(list);
????????db.close();?
// halt?without?this?line?in?5.2
????}

上面的例子會(huì)存儲(chǔ)兩個(gè)同樣的User對(duì)象。
僅有的ID是一個(gè)存儲(chǔ)文件中的ID, 經(jīng)過碎片整理之后會(huì)發(fā)生變化,顯然不適用。
要實(shí)現(xiàn)一個(gè)auto_increament的主鍵恐怕要自行實(shí)現(xiàn)。或者用已有的UUID實(shí)現(xiàn)。

可能db4o太年輕的關(guān)系,目前還沒有支援這些功能。建議用@Annotation來實(shí)現(xiàn)。并且控制存儲(chǔ)。
@ID
@Unique
@Index
在EJB3里面已經(jīng)有現(xiàn)成的定義可以參考。