22

標準JPA 2を使用して、それぞれのエンティティテーブルの単一フィールドに整数のリストを格納することは可能ですか?

@Entity
@Table(name="tbl_myentities")
public class MyEntity {

@ElementaryCollection
@Column(name="vals") // in table tbl_myentities
private List<Integer> vals;
4

5 に答える 5

17

1 つのフィールドに複数の値を格納することはできません。それらを単一のフィールドに格納する理由は何ですか?

タイプ String のフィールドを使用し、そこにあるすべての整数をコンマ区切りのリストに追加し、ゲッターとセッターで結合/分解する方法があります。

private String vals;

public setVals(int vals[])
{
     // this.vals = Iterate vals[] and create a comma separated string
}

public int[] getVals()
{
    // vals.split(",") to get a list of Strings, then typecast/parse them to ints before returning
}

@ElementCollection注釈を使用し@CollectionTableてマッピングを制御するには、値を格納する別のテーブルが必要です。

@ElementCollection
private Collection<Integer> integers;

要素コレクションの詳細については、http://en.wikibooks.org/wiki/Java_Persistence/ElementCollectionを参照してください。

同様の質問はこちらJPA @ElementCollection アノテーションは常に 1 対多の関係を生成しますか?

于 2012-01-30T14:49:07.180 に答える
0

それは不可能だと思います。整数のリストを格納できるデータベーステーブルに列を作成できないためです。

できることは、整数のリストの代わりに文字列型のフィールドを使用することです-

@Column(name="vals") // in table tbl_myentities
private String vals;

そして、エンティティを保存する前とエンティティを読み取った後に、整数のリストから文字列への変換と手動での変換を行います。

于 2012-01-30T14:53:36.553 に答える