具有ToOne关系和外键的GreenDAO实体

时间:2015-10-14 14:12:27

标签: android greendao greendao-generator

我尝试使用GreenDAO在我的数据库中创建实体。我的对象由这个类定义:

public class Container {
    String id; //GUID
    String name;
    Product product;
}

public class Product {
    String urlImage;
    String productName;
    String description;
}

以下代码定义了我的实体:

Entity container = schema.addEntity("Container");
Property productsForeignKey = container.addStringProperty("id").notNull().unique().getProperty(); 
container.addStringProperty("name");

Entity product = schema.addEntity("Product");
product.addStringProperty("productName");
product.addStringProperty("urlImage");
product.addStringProperty("description");

containerToProduct = container.addToOne(product, productsForeignKey);

最后我得到了这个例外:

java.lang.RuntimeException: Currently only single FK columns are supported: ToOne 'product' from Container to Product

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我使用Container的主键作为Product的外键解决了这个问题。事实证明,String Foreign Key不是一个好选择。所以,我的解决方案更像是这样:

Entity container = schema.addEntity("Container");
Property productsForeignKey = container.addLongProperty("newId").primaryKey().autoincrement().getProperty(); 
container.addStringProperty("name");

Entity product = schema.addEntity("Product");
product.addStringProperty("productName");
product.addStringProperty("urlImage");
product.addStringProperty("description");

containerToProduct = container.addToOne(product, productsForeignKey);

其中newId只是用于方便的随机字段。