java.lang.noclassdeffouderror,autoid怎么使用
在JAVA中使用eXtremeDB autoid主要存在以下问题:
定义
插入数据
取得了记录。 如何获取autoid
知道autoid并获取记录的方法
定义自动识别
在定义类之前添加注释。 请注意,@persistent(autoid=true ) eXtremeDB中的autoid只是在类级别定义,而不需要单独定义一列表示。
插入数据
使用的insert方法插入即可,无需关注autoid。 如果需要知道系统为记录生成的autoid值,可以使用insert方法的返回值。
从记录中获取autoid
首先,可以使用Cursor类的find方法将光标悬停在指定记录上,然后使用Cursor类的getAutoId ()方法检索。
用autoid获取记录
只需创建不指定索引名称的Cursor,然后直接将autoid传递给find方法
cursorCP=newcursor(con,Person.class;
PersonP3=CP.find(PRH2.Personid ); 完整的示例程序如下
import com.MC object.extreme db.connection;
import com.MC object.extreme db.cursor;
import com.MC object.extreme db.database;
import com.MC object.extreme db.indexable;
import com.MC object.extreme db.persistent;
@永久(autoid=true )/classwillbestoredinextremedbdatabase,declare autoid indexes
类人员{
人员(字符串名称) {
this.name=name;
}
@indexable(unique=true,type=database.indextype.hashtable ) ) ) ) )。
字符串名称;
}
@永久(autoid=true )/classwillbestoredinextremedbdatabase,declare autoid indexes
类house {
house (字符串地址) {
this.address=address;
}
@indexable(unique=true,type=database.indextype.hashtable ) ) ) ) )。
字符串地址;
}
@持续(autoid=true ) )。
class Person_R_House {
Person_r_house(longpersonid,long houseID ) {
this.personID=personID;
this.houseID=houseID;
}
@indexable(unique=false,type=database.indextype.hashtable ) )。
长个人身份;
@indexable(unique=false,type=database.indextype.hashtable ) )。
龙虎身份证;
}
公共类测试自动识别{
静态final int page _ size=128;
saticfinalintdisk _ page _ size=4096;
staticfinalintdisk _ cache _ size=4* 1024 * 1024;
saticfinalintdatabase _ size=16 * 1024 * 1024;
静态final int n _ person=5;
静态final int n _ house=5;
publicstaticvoidmain (字符串[ ] args ) {
数据库db=new database (;
database.parameters params=new database.parameters (;
params.memPageSize=PAGE_SIZE;
params.classes=new class [ ] { person.class,House.class,Person_R_House.class};
db.open(testautoiddb )、params、DATABASE_SIZE );
连接con=new connection (db;
//
//Insert data in the database
//
con.start transaction (database.transaction type.read write );
for(intI=1; i lt=N_PERSON; I ) {
con.insert (新个人(个人- ' I );
con.insert(newhouse('house-'I ) );
}
con.commitTransaction (;
//
//associateexistingpersonandexistinghouse
//
con.start transaction (database.transaction type.read write );
cursorcursorp=newcursor(con,Person.class,' name );
cursorcursorh=newcursor(con,House.class,' address ' );
人员P1=cursorp.find (人员-1);
houseH1=cursorh.find(house-2 );
if(p1!=null h1!=空) {
person _ r _ house pr h=new person _ r _ house (cursorp.get autoid (,cursorH.getAutoId ) );
con.insert(prh;
}
cursorP.close (;
cursorH.close (;
con.commitTransaction (;
//
//associatenewpersonandnewhouse
//
con.start transaction (database.transaction type.read write );
人员2=新人员(人员-新);
houseH2=newhouse(house-new );
longPID=con.insert(P2; //becausetheclasswasannotatedwith (自动=真)、
//theinsertmethodreturnsthegeneratedautoidofthenewlycreateobject
longhid=con.insert(H2;
person _ r _ house pr h=new person _ r _ house (PID,hID );
con.insert(prh;
con.commitTransaction (;
//
//showtherelationshipbetweenpersonandhouse
//
con.start transaction (database.transaction type.readonly );
cursorcursorprh=newcursor(con,Person_R_House.class );
for (person _ r _ house pr h 2: cursorprh ) ) ) ) )
cursorCP=newcursor(con,Person.class;
cursorch=newcursor(con,House.class;
PersonP3=CP.find(PRH2.Personid );
houseH3=ch.find(PRH2.houseid );
system.out.format('%shasahouse,地址is : % s (n ),p3.name,h3.address );
cp.close (;
ch.close (;
}
cursorPRH.close (;
con.commitTransaction (;
con.disconnect (;
db.close (;
}
}