【问题标题】:GreenDAO entities with ToOne relation and Foreign Key具有 ToOne 关系和外键的 GreenDAO 实体
【发布时间】:2015-10-14 14:12:27
【问题描述】:

我正在尝试使用 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

我做错了什么?

【问题讨论】:

    标签: android greendao greendao-generator


    【解决方案1】:

    我通过使用 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 只是为了方便而使用的随机字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多