一尘不染

JPA:“数据对于列而言太长”不会更改

hibernate

我的一个实体Machinery拥有一个String名为的属性notes。JPA
2-Hibernate会为我生成模式,在我的情况下,RDBMS是MySQL。

notes被创建为一VARCHAR(255)列,这是正确的。

用户开始创建记录,并且所有记录都能完美运行,但是随后一些用户收到了臭名昭著的Data too long for column "notes"错误。

该字段没有足够的空间容纳用户的机器记录!好,没问题 让我们更改架构!

因此,我打开实体类并将属性更改为:

@Column(length=1000000)
@Lob
private String notes;

顺便persistence.xml说一句,我声明:

<property name="hibernate.hbm2ddl.auto" value="update" />

重新启动应用程序后,我很高兴Hibernate将我的notes列更改为LONGTEXT(对我来说足够了)。

因此,我首先尝试使用应用程序创建新的“长期记录”记录,尽管LONGTEXT现在还是错误“数据太长” 。

然后,我尝试INSERT从MySQL命令行进行原始操作,并且可以正常工作!我可以在该字段中插入长注释!

最后,我DROP在我的本地/分期DB模式的变化hibernate.hbm2ddl.autopersistence.xml,以create和它的作品。

JPA仍然认为这是VARCHAR吗?它是否具有某种缓存或用于存储架构信息的某个位置?

显然,我不能删除生产数据库。那么,我该怎么做才能重置或更改列类型?

我正在使用JBossAS7 JPA 2-Hibernate。


阅读 268

收藏
2020-06-20

共1个答案

一尘不染

没有!我最终得到:-数据库备份-hbm2ddl => CREATE-DROP-hbm2ddl =>更新-数据库还原

疯!:(

2020-06-20