我在Android上使用ORMLite并提出以下问题: 是否可以基于单个Java类创建许多表?
这些表的名称应该不同,对它们的访问应该是名称。
例如,如果我有一个班级:
public class Order{
@DatabaseField
public string Name;
@DatabaseField
public string Amount;
}
我有一个可以创建订单的动态数量的模块。我希望每个模块都有自己的表,但所有表都应该有类似的模式。
我知道我可以在Order类中添加一个指示源模块名称的字段,并将所有订单都放在一个表中,但我想知道是否有办法分隔表(为了更快的查询,更快的删除来自同一模块的订单等等)
谢谢!
答案 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
中的字段将位于每个fooorder
和barorder
表格中。