【发布时间】:2016-11-10 09:23:49
【问题描述】:
我在我的实体类中使用带有 Hibernate JPA 的 Spring Boot,并带有以下代码,
@ElementCollection
private Map<String, String> userFiles= new HashMap<>();
在哪里生成集合表user_files。然而,默认的列类型是VARCHAR(255),有时用户数据可能比这更长。我的问题是如何定义此表以使用BLOB 或TEXT 作为列?我试图直接在那里输入@Lob 注释但不起作用。
【问题讨论】:
-
地图的什么、键或值?
-
应该更清楚。地图值,基于用户输入,可以很长。
-
我希望
@Lob注释应用于该值,正如您所说的那样。当然,orm.xml XSD 允许<lob>在<element-collection>下,这意味着它应该可以工作。可能会向您的 JPA 提供商提出问题,或者查阅他们的文档,因为我没有看到其他明显的地方 -
当然不是使用@Column,但这意味着使用“columnDefinition”,这是一个糟糕的特定于数据库的字符串定义,因此跨数据存储的移植性不太好
-
是的,这可能也行。正如我在另一个答案中回答的那样,我的错误是重试而不先删除表,我认为 JPA 会自动将新类型应用于现有表,但我错了。
标签: mysql hibernate jpa spring-data-jpa