外地没有价值的Ormlite

时间:2014-06-09 03:31:28

标签: android foreign-keys ormlite

我想请求使用Ormlite的帮助。我有一个类(Node.class)与字段 -

@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 个答案:

答案 0 :(得分:0)

我认为@ k3v1n4ud3的评论指的是正确答案。

首先需要将node插入Node表格,以便id中的Node字段可以自动生成并设置在node上对象。然后,您可以将其分配到node中的Classroom字段,这样当您将Classroom插入数据库时​​,node_id字段将为非0。

引用ORMLite中的docs on "foreign objects"

  

使用异物创建字段时,请注意不会自动为您创建异物。如果您的外来对象具有由数据库提供的generated-id,那么您需要在创建引用它的任何对象之前创建它。