2011-08-07 18 views
1

私は2次元コレクションにデータのテーブルを格納しようとしています。 たびI:Play!で2次元配列を作成するフレームワーク

@OneToMany 
public List<List<Cell>> cells; 

私はJPAのエラーを取得:

JPAエラー は、JPAのエラーが(のEntityManagerFactoryを構築することができません)が発生しました:@OneToManyの使用または@ManyToManyがマップされていないクラスをターゲット:models.Table .cells [java.util.Listに]

セルが、それは基本的に文字列デコレータだ、私が作成したクラスです。何か案は?私はちょうど私が格納できる二次元の行列が必要です。

@Entity public class Table extends Model { 

    @OneToMany 
    public List<Row> rows; 

    public Table() { 
     this.rows = new ArrayList<Row>(); 
     this.save(); 
    } 

} 

@Entity public class Row extends Model { 

    @OneToMany 
    public List<Cell> cells; 

    public Row() { 
     this.cells = new ArrayList<Cell>(); 
     this.save(); 
    } 

} 

@Entity public class Cell extends Model { 

    public String content; 

    public Cell(String content) { 
     this.content = content; 
     this.save(); 
    } 

} 

答えて

2

私が知る限り、@OneToManyはエンティティの一覧でのみ動作します。エンティティではないリストのリストを実行しているので、失敗します。モデルを変更するには

試してみてください。

表>行> @OneToManyを介して細胞

それらのすべてを、あなたはあなたの2次元構造を持っていますが、エンティティとすることができますので。

EDIT:

私はあなたのモデルの宣言が正しくないと信じています。この方法を試してください。

@Entity public class Table extends Model { 

    @OneToMany(mappedBy="table") 
    public List<Row> rows; 

    public Table() { 
     this.rows = new ArrayList<Row>(); 
    } 

    public Table addRow(Row r) { 
     r.table = this; 
     r.save(); 
     this.rows.add(r);  
     return this.save(); 
    } 

} 

@Entity public class Row extends Model { 

    @OneToMany(mappedBy="row") 
    public List<Cell> cells; 

    @ManyToOne 
    public Table table; 

    public Row() { 
     this.cells = new ArrayList<Cell>(); 
    } 

    public Row addCell(String content) { 
     Cell cell = new Cell(content); 
     cell.row = this; 
     cell.save(); 
     this.cells.add(cell); 
     return this.save(); 
    } 

} 

@Entity public class Cell extends Model { 

    @ManyToOne 
    public Row row;  

    public String content; 

    public Cell(String content) { 
     this.content = content; 
    } 

} 

作成するには:

Row row = new Row(); 
row.save(); 
row.addCell("Content"); 
Table table = new Table(); 
table.save(); 
table.addRow(row); 
+0

を私はあなたが言った、まさにしようと、私は取得しています: JPAエラー をJPAエラーが(のEntityManagerFactoryを構築することができません)が発生しました:インスタンス化ができませんでしたtest objectmodels.Row – zmahir

+0

@zmahirあなたが使用したコードを投稿できますか? –

+0

最初の投稿はコードで編集されました。 – zmahir

関連する問題