我尝试使用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
我做错了什么?
答案 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只是用于方便的随机字段。