【问题标题】:Android ORMLite: one object but two tablesAndroid ORMLite:一个对象但两个表
【发布时间】:2015-12-08 17:14:08
【问题描述】:

所以我创建了一个名为Food 的通用类。

我有一个 FoodStuff 是糖果,所以我创建了一个名为“糖果”的数据库表,其中类的 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

现在假设我想扩展我的 Android 应用程序,方法是在顶部的“糖果”选项卡旁边添加一个额外的选项卡,该选项卡将显示所有包含肉类的食品。

我想在我的 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;

【问题讨论】:

    标签: android sqlite ormlite


    【解决方案1】:

    这甚至可以在 ORMLite 中使用一个类吗?我想它可能看起来像这样,但这不起作用,因为它使 ORMLite 混淆了应该将数据导入哪个表:

    我会考虑使用子类。因此,您可以将 Food 设为 abstract,然后:

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

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

    如果你必须使用同一个类,那么你可以configure the tables programmatically

    【讨论】:

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