8

我有两个类设置,如下所示。我很困惑什么时候需要将某些东西注释为外国收藏,什么时候不需要。这听起来也很愚蠢,但ORMLite文档中没有任何地方说明是否允许非外国收藏。如果我有一个int自动装箱到Integers 中的 s 列表怎么办?我可以坚持使用@DatabaseField高于标准的标准Collection吗?根据 ,外国集合ORMLite还必须具有反向引用才能工作(对父级的引用,给予一对多的关系)。对于下面的示例,我假设您应该注释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;
    }
}
4

2 回答 2

9

@罗伯特是正确的。当 hibernate 持久化一个集合(甚至是一个数组)时,它会使用带有外部 id 的隐藏的额外表来实现 - 换句话说,隐藏的外部集合。ORMLite 尝试遵守 KISS 原则,因此您改为“手动”定义外国集合。

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

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


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

于 2011-06-08T11:14:24.760 回答
0

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

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

并获取我的对象列表:

public List<MyObject> getMyObjects() {
  return myObjects;
}
于 2015-07-23T22:16:39.143 回答