在ORMLite中为一个类创建多个表

时间:2012-08-20 13:35:24

标签: java android ormlite

我在Android上使用ORMLite并提出以下问题: 是否可以基于单个Java类创建许多表?

这些表的名称应该不同,对它们的访问应该是名称。

例如,如果我有一个班级:

public class Order{
    @DatabaseField
    public string Name;

    @DatabaseField
    public string Amount;
}

我有一个可以创建订单的动态数量的模块。我希望每个模块都有自己的表,但所有表都应该有类似的模式。

我知道我可以在Order类中添加一个指示源模块名称的字段,并将所有订单都放在一个表中,但我想知道是否有办法分隔表(为了更快的查询,更快的删除来自同一模块的订单等等)

谢谢!

1 个答案:

答案 0 :(得分:12)

这里最大的问题是“动态”是什么意思。如果你的意思是你需要动态创建这些模块Order而你事先不知道它们的名字,那么我相信模块名称字段是一种有效的方法。为每种类型的订单创建一个表似乎对我来说过早优化 - 没有充分理由的复杂性。

也就是说,您可以通过为每个表和DatabaseTableConfig实例化defining the class programmatically来完成动态类。

如果你真的不是指动态,那么完成将每个模块Order放在自己的表中的最简单方法就是使用子类。

你可以:

@DatabaseTable
public class FooOrder extends Order {
    // fields will be gotten from Order
}

@DatabaseTable
public class BarOrder extends Order {
    // fields will be gotten from Order
}

Order中的字段将位于每个fooorderbarorder表格中。