我有两个如下的类设置。当我需要注释什么东西作为外国收藏时,我什么时候不需要,我感到困惑。这听起来也很愚蠢,但是ORMLite文档中没有任何地方说明是否允许非外部集合。如果我有一个自动int装箱到Integer的清单,该怎么办?我可以使用@DatabaseField上面的标准来坚持Collection吗?根据,外国馆藏ORMLite还必须具有向后引用才能正常工作(给父母的引用,具有一对多的关系)。对于下面的示例,我假设您应该将注解myBList作为外部集合并进行myA异化,但是您将如何处理myStringList呢?
ORMLite
int
Integer
@DatabaseField
Collection
myBList
myA
myStringList
我在这里看到了示例代码,但没有回答我的问题:http : //ormlite.com/docs/examples
public class A { private Set<B> myBList = new HashSet<B>(); private List<String> myStringList = new ArrayList<String>(); private long id; public A(){} public Set<B> getMyBList() { return myBList; } public void setMyBList(Set<B> myBList) { this.myBList = myBList; } public List<String> getMyStringList() { return myStringList; } public void setMyStringList(List<String> myStringList) { this.myStringList = myStringList; } public void setId(long id){ this.id = id; } public long getId(){ return id; } } public class B { private int myInt; private String myString; private A myA; private long id; public B(){} public A getMyA(){ return myA; } public A setMyA(A a){ myA = a; } public int getMyInt() { return myInt; } public void setMyInt(int myInt) { this.myInt = myInt; } public String getMyString() { return myString; } public void setMyString(String myString) { this.myString = myString; } public void setId(long id){ this.id = id; } public long getId(){ return id; } }
@罗伯特是正确的。当hibernate持久化一个集合(甚至一个数组)时,它会使用带有外部ID的隐藏的多余表(换句话说,就是隐藏的外部集合)来实现。ORMLite尝试遵守KISS原则,因此您是否“手工”定义了国外藏品。
我添加了有关存储集合的更多详细信息。
http://ormlite.com/docs/foreign- collection
这意味着您不能持久化Integer类型,因为没有外部标识符。另外,您的代码可以定义外部集合Collection<Order>或ForeignCollection<Order>。任一个都会设置为ForeignCollection。ORMLite不支持列表或其他集合类型。
Collection<Order>
ForeignCollection<Order>
ForeignCollection