2011-12-16 16 views
3

我有一個包含以下構件的實體屬性:使用JPA註解和地圖<字符串,字符串>使用一個varchar長度

@Id 
protected String id; 

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

此映射到兩個表,一個實體表,和一個ENTITY_DATA表中包含HashMap中每個元素的行。它將HashMap中的值映射爲VARCHAR(256),我需要它是VARCHAR(1024)。這可以做到嗎?我無法在ElementCollection或MapKeyClass註釋中找到任何可以實現這一點的註釋。

+0

作爲一個側面說明 - 你**不需要**指定如果您使用泛型,則使用`targetClass`和`@ MapKeyClass`。這些類型可以從Java類型推斷出來。 – 2011-12-16 22:15:27

回答

6

因爲,正如你所說,問題與價值觀,它一般與列一樣。只需在該字段添加以下注釋。

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

隨着JPA 2.0,你可以做同樣的也到現場,其中地圖的關鍵是堅持用MapKeyColumn註釋:

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

如果可以的話,我會讓你滿意的。謝謝,這很好。 – 2011-12-16 18:32:15

相關問題