java - 使用 JPA 注释和具有 varchar 长度的 Map<String,String>

标签 java hibernate jpa

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

@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/

相关文章:

java - 自定义 Jackson 序列化具有一对多关系的实体

java - 合并回来时不会调用分离实体的生命周期回调

java - 对象中正在运行的线程是否会阻止它在 Java 中被垃圾收集?

java - 如何验证 HQL 语法是否正确(不执行)?

java - 服务器启动时的 hibernate 验证不检查列长度

java - 将 Kundera 与 Cassandra 一起使用时 JPA 的连接类型?

java - Spring JPA Hibernate 自动填充审计字段(创建 ID/时间戳等)

java - 用 iText 替换纯文本

java - 为 Applet 指定代码路径

java - Hibernate 在查询时抛出 StackOverflowError