2015-10-14 6 views
1

Я пытаюсь создать объекты в своей базе данных с помощью GreenDAO. Мой объект определяется этим классом:Объекты GreenDAO с отношением ToOne и внешним ключом

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

Я решил использовать его с использованием первичного ключа контейнера в качестве внешнего ключа продукта. Оказывается, 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 - это просто случайное поле, используемое для удобства.

Смежные вопросы