【问题标题】:JPA how to set column type to be BLOB for ElementCollection tableJPA如何将ElementCollection表的列类型设置为BLOB
【发布时间】:2016-11-10 09:23:49
【问题描述】:

我在我的实体类中使用带有 Hibernate JPA 的 Spring Boot,并带有以下代码,

@ElementCollection
private Map<String, String> userFiles= new HashMap<>();

在哪里生成集合表user_files。然而,默认的列类型是VARCHAR(255),有时用户数据可能比这更长。我的问题是如何定义此表以使用BLOBTEXT 作为列?我试图直接在那里输入@Lob 注释但不起作用。

【问题讨论】:

  • 地图的什么、键或值?
  • 应该更清楚。地图值,基于用户输入,可以很长。
  • 我希望 @Lob 注释应用于该值,正如您所说的那样。当然,orm.xml XSD 允许 &lt;lob&gt;&lt;element-collection&gt; 下,这意味着它应该可以工作。可能会向您的 JPA 提供商提出问题,或者查阅他们的文档,因为我没有看到其他明显的地方
  • 当然不是使用@Column,但这意味着使用“columnDefinition”,这是一个糟糕的特定于数据库的字符串定义,因此跨数据存储的移植性不太好
  • 是的,这可能也行。正如我在另一个答案中回答的那样,我的错误是重试而不先删除表,我认为 JPA 会自动将新类型应用于现有表,但我错了。

标签: mysql hibernate jpa spring-data-jpa


【解决方案1】:

您是否尝试过以下方法?

@Column(columnDefinition="BLOB NOT NULL")
@MapKeyColumn(columnDefinition="BLOB NOT NULL")

请参阅 MapKeyColumnLob

【讨论】:

  • 非常感谢。我之前确实找到了这些注释,但我犯了一个错误,我应该先删除以前创建的表,否则 JPA 不会使用新配置创建新表。您的回答引导我重试,终于弄明白了。
猜你喜欢
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2013-01-18
  • 2012-12-17
  • 2018-08-05
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多