使用JPA Annotations和Map <String,String>和varchar长度

Jas*_*ols 3 java hibernate jpa

我有一个包含以下成员属性的实体:

@Id
protected String id;

@ElementCollection(targetClass = String.class)
@MapKeyClass(String.class)      
protected Map<String, String> data = new HashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

这映射到两个表,一个ENTITY表和一个ENTITY_DATA表,其中包含HashMap中每个元素的行.它将HashMap中的值映射为VARCHAR(256),我需要它为VARCHAR(1024).可以这样做吗?我无法在ElementCollection或MapKeyClass注释中找到允许这样做的任何内容.

Mik*_*unu 6

因为,正如你所说,问题在于值,它与一般的列一样.只需在该字段中添加以下注释即可.

@Column(columnDefinition = "varchar(1024)")
Run Code Online (Sandbox Code Playgroud)

使用JPA 2.0,您也可以使用MapKeyColumn注释持久保存地图的键:

@MapKeyColumn(columnDefinition = "varchar(1024)")
Run Code Online (Sandbox Code Playgroud)