2015-10-14 50 views
1

我試圖在使用GreenDAO的數據庫中創建實體。我的目標是通過這個類中定義:具有ToOne關係和外鍵的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

我使用Container的主鍵作爲Product的外鍵解決了這個問題。事實證明,字符串外鍵不是一個好的選擇。所以,我的解決方案更像這樣:

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只是爲了方便而使用的隨機場。