8

次のように2つのクラスをセットアップしています。何かに外部コレクションとして注釈を付ける必要がある場合とそうでない場合について、私は混乱しています。これもばかげているように聞こえるかもしれませんが、ドキュメントのどこにも、ORMLite外部以外のコレクションが許可されているかどうかは記載されていません。ints に自動ボックス化されるs のリストがある場合はどうなりIntegerますか? @DatabaseField上記の標準を使用してこれを永続化できCollectionますか? によるとORMLite、外部コレクションは、それが機能するために逆参照も必要です (1 対多の関係が与えられた親への参照)。以下の例では、外部オブジェクトmyBListを作成するだけでなく、外部コレクションとして注釈を付ける必要があると想定していますが、どのように処理できますか?myAmyStringList

ここでサンプルコードを見ましたが、私の質問には答えません: 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

オブジェクトの Collection (ArrayList など) を ORMLite に保存する場合、最も簡単な方法は次のとおりです。

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

オブジェクトのリストを取得するには:

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