我有两个类设置,如下所示。我很困惑,当我需要注释作为外国收藏品的东西,当我不需要。这可能听起来很愚蠢,但在ORMLite
文档中没有说明是否允许非外国收藏。如果我有一个int
列表被自动装入Integer
s怎么办?我可以使用@DatabaseField
上方的标准Collection
来坚持这一点吗?根据{{1}},一个外国收藏品也必须有后备参考才能发挥作用(对父母的引用,给定一对多的实际情况)。对于下面的示例,我假设您应该将ORMLite
注释为外部集合以及使myBList
成为外来对象,但是如何处理myA
?
我在这里看过示例代码,但它没有回答我的问题:http://ormlite.com/docs/examples
myStringList
答案 0 :(得分:9)
@Robert是对的。当hibernate持久化一个集合(甚至是一个数组)时,它会使用带有外来id的隐藏额外表来实现 - 换句话说就是隐藏的外部集合。 ORMLite试图遵循KISS原则,因此您可以“手动”定义外国馆藏。
我添加了有关存储集合的更多详细信息。
这意味着您无法保留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;
}