我有一个包含以下成员属性的实体:
@Id
protected String id;
@ElementCollection(targetClass = String.class)
@MapKeyClass(String.class)
protected Map<String, String> data = new HashMap<String,String>();
这映射到两个表,一个ENTITY表和一个ENTITY_DATA表,其中包含HashMap中每个元素的行。它将HashMap中的值映射为VARCHAR(256),我需要它为VARCHAR(1024)。可以这样做吗?我无法在ElementCollection或MapKeyClass注释中找到允许这样做的任何内容。
答案 0 :(得分:6)
因为正如你所说,问题在于价值观,因此它与一般的列一样。只需在该字段中添加以下注释即可。
@Column(columnDefinition = "varchar(1024)")
使用JPA 2.0,您也可以使用MapKeyColumn注释持久保存地图的键:
@MapKeyColumn(columnDefinition = "varchar(1024)")