2015-12-08 4 views
1

Итак, я создал общий класс под названием Food.Android ORMLite: один объект, но две таблицы

Один из FoodStuff У меня есть сладости, поэтому я создал базу данныхTable под названием «сладости», где 3 свойства класса хранятся в классе, а именно foodname, id and sugar levels сладостей.

@DatabaseTable(tableName = "sweets") 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class Food implements Serializable { 

    @DatabaseField(id = true) 
    @JsonProperty 
    private String id; //for both sweets and meats 
    @DatabaseField 
    @JsonProperty 
    private String foodname; //for both sweets and meats 
    @DatabaseField 
    @JsonProperty 
    public int sugar; //for sweets only 
    @DatabaseField 
    @JsonProperty 
    public int protein; //for meats only 

Теперь давайте говорить, что я хочу, чтобы расширить свой андроид приложение, добавив вкладку дополнительные наверху рядом с вкладкой «конфет», который будет отображать все пищевые продукты, содержащие мясо.

Я хочу, чтобы добавить в дополнительной databaseTable в моей базе данных SQLite называется meats и он должен хранить только foodname, id and protein levels.

Это возможно даже с помощью одного класса в ORMLite? Я думал, может быть, это будет выглядеть примерно так, но это не работает, как он путает ORMLite, какие таблицы следует импортировать данные в:

@DatabaseTable(tableName = "sweets") 
@DatabaseTable(tableName = "meats") 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class Food implements Serializable { 

    @DatabaseField(id = true) 
    @JsonProperty 
    private String id; 
    @JsonProperty 
    private String foodname; 
    @JsonProperty 
    public int sugar; 
    @JsonProperty 
    public int protein; 

ответ

3

Это возможно даже с помощью одного класса в ORMLite? Я подумал, может быть, это будет выглядеть примерно так, но это не сработает, поскольку он смущает ORMLite, в какую таблицу он должен импортировать данные:

Я бы рассмотрел использование подкласса. Таким образом, вы бы Food быть abstract и затем:

@DatabaseTable(tableName = "sweets") 
public class Sweets extends Food { 

и

@DatabaseTable(tableName = "meats") 
public class Meats extends Food { 

Если вы должны использовать один и тот же класс, то вы можете configure the tables programmatically.

+0

Я так много думал - спасибо! – Simon

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