在android中使用ORMLite保持Collection类

时间:2011-06-07 22:05:10

标签: java android database orm ormlite

我有两个类设置,如下所示。我很困惑,当我需要注释作为外国收藏品的东西,当我不需要。这可能听起来很愚蠢,但在ORMLite文档中没有说明是否允许非外国收藏。如果我有一个int列表被自动装入Integer s怎么办?我可以使用@DatabaseField上方的标准Collection来坚持这一点吗?根据{{​​1}},一个外国收藏品也必须有后备参考才能发挥作用(对父母的引用,给定一对多的实际情况)。对于下面的示例,我假设您应该将ORMLite注释为外部集合以及使myBList成为外来对象,但是如何处理myA

我在这里看过示例代码,但它没有回答我的问题:http://ormlite.com/docs/examples

myStringList

2 个答案:

答案 0 :(得分:9)

@Robert是对的。当hibernate持久化一个集合(甚至是一个数组)时,它会使用带有外来id的隐藏额外表来实现 - 换句话说就是隐藏的外部集合。 ORMLite试图遵循KISS原则,因此您可以“手动”定义外国馆藏。

我添加了有关存储集合的更多详细信息。

  

http://ormlite.com/docs/foreign-collection


这意味着您无法保留Integer类型,因为没有外来ID。此外,您的代码可以定义外部集合Collection<Order>ForeignCollection<Order>。任何一个都将设置为ForeignCollection。 ORMLite不支持列表或其他集合类型。

答案 1 :(得分:0)

如果要将对象的Collection(例如ArrayList)保存到ORMLite,最简单的方法是:

@DatabaseField(dataType = DataType.SERIALIZABLE)
private SerializedList<MyObject> myObjects;

并获取我的对象列表:

public List<MyObject> getMyObjects() {
  return myObjects;
}