我有一个包含以下成员属性的实体:
@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 注释中找不到任何允许这样做的内容。
最佳答案
因为,正如您所说,问题出在值上,所以它与一般的列一样。只需在字段中添加以下注释即可。
@Column(columnDefinition = "varchar(1024)")
使用 JPA 2.0,您也可以对使用 MapKeyColumn 保留 map 键的字段执行相同操作注释:
@MapKeyColumn(columnDefinition = "varchar(1024)")
关于java - 使用 JPA 注释和具有 varchar 长度的 Map<String,String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8537054/