2011-12-16 13 views
3

と私は、次のメンバー属性を含むエンティティを持っている:は、varchar型の長さ

@Id 
protected String id; 

@ElementCollection(targetClass = String.class) 
@MapKeyClass(String.class)  
protected Map<String, String> data = new HashMap<String,String>(); 

この2つのテーブル、ENTITYテーブル、およびENTITY_DATAにマップHashMap内の各要素の行を含むテーブル。 HashMapの値をVARCHAR(256)としてマップし、VARCHAR(1024)にする必要があります。これはできますか?これを可能にするElementCollectionまたはMapKeyClass注釈では何も見つかりません。

+0

- あなたは** **指定する必要はありません。ジェネリックスを使用する場合は 'targetClass'でも' @ MapKeyClass'でもありません。これらの型は、Java型から推論できます。 –

答えて

6

あなたが言うように、問題は値であるため、一般的な列のようになります。次のアノテーションをフィールドに追加するだけです。

@Column(columnDefinition = "varchar(1024)") 

JPA 2.0を使用すると、マップのキーはMapKeyColumn注釈を持続している場合、フィールドも同じことを行うことができます側の注意点として

@MapKeyColumn(columnDefinition = "varchar(1024)") 
+0

もしできれば私はあなたに10倍アップアップしたいと思います。ありがとう、それは完全に働いた。 –

関連する問題