2014-06-09 77 views
0

我想問一下使用Ormlite的幫助。我有一個類(Node.class)與fields-Foreignfield沒有價值Ormlite

@DatabaseField(generatedId = true) 
public int id; 
@DatabaseField 
String path; 
@DatabaseField 
String label; 
@DatabaseField 
Date lastModified; 
@DatabaseField 
String resourceType = NODE_TYPE_ENTRY; 
@DatabaseField 
int status = NODE_STATUS_FRESH; 
@DatabaseField 
boolean leaf = false; 
@DatabaseField 
UUID uuid; 

@ForeignCollectionField(eager = false) 
public ForeignCollection<Node> children; 
@ForeignCollectionField(eager = true) 
public ForeignCollection<Property> properties; 
@DatabaseField(foreign = true,index=true) 
Node parent; 

和其他類(Classroom.class)與領域

@DatabaseField(generatedId=true) 
int id; 
@DatabaseField 
String name; 
@DatabaseField 
String value; 

@DatabaseField(foreign=true,index=true) 
Node node; 

我的問題是,當我添加屬性,字段節點始終爲0,結果應該是創建的節點的ID。

希望得到您的幫助。

謝謝

+1

你嘗試先插入節點對象,然後再次將其設置爲你的課堂對象,然後堅持課堂對象? – k3v1n4ud3

回答

0

我覺得@ k3v1n4ud3的評論是指向你的正確答案。

您首先需要插入nodeNode表,以便在Nodeid場可自動生成和node對象上設置。然後,您可以將其分配給Classroom中的node字段,因此當您將Classroom插入數據庫時​​,node_id字段將爲非0。

要ORMLite引述docs on "foreign objects"

當您創建一個異物的字段,請注意,異物不會自動爲您創建。如果您的外部對象具有由數據庫提供的生成標識,那麼您需要在創建引用它的任何對象之前創建它。