当前位置: 首页 > 面试题库 >

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

钮勇
2023-03-14
问题内容

我的一个实体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。


问题答案:

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

疯!:(



 类似资料:
  • 我有我的班级电影: 和我的控制器方法: 我得到一个错误: Servlet.service()的servlet[springDispatcher]在上下文与路径[/web编程]抛出异常[请求处理失败;嵌套异常org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];嵌套异常是org.hibernate.except

  • 问题内容: 我正在使用SQL数据库,我有一列名为“价格”。创建数据库后,将“价格”列设置为“我”,需要将其类型更改为不丢失数据库中的数据。这应该通过SQL脚本来完成 我想到了创建一个新列,将数据移到其中,删除旧列,然后重命名新创建的列。 有人可以帮我举个例子吗?在SQL中也有一个函数可以将字符串解析为十进制? 谢谢 问题答案: 您无需添加新列两次,只需在更新新列后删除旧列即可: 请注意,如果不是数

  • 错误代码:1406。数据对于列来说太长了 现在一些值 插入的记录 如果我们 它显示了错误信息 错误代码:1406。数据对于列来说太长了 但我的期望是,我想在表中插入至少前45个字符 如果问题不清楚,请告诉我。 我知道此错误的原因。我正在尝试插入超过数据类型长度的值。 我想要MySQL中的解决方案,因为它可以在MSSQL中使用。所以我希望它也能在MySQL中使用。

  • 问题内容: 我的实体中有一些字段,例如: 在我的数据库架构上,该字段设置为,所以应该没问题。无论如何:每当我尝试插入图片或pdf时-都不比,我只会收到此信息 我已经检查了我的MySQL cnf,并将参数设置为-我缺少什么吗? 问题答案: 这完全取决于用于列的列类型。根据您的需要,使用: :最大长度为255个字节 :最大长度为65,535字节 :最大长度16,777,215字节 :最大长度为4,29

  • 我已经编写了一个MySQL脚本,为假设的医院记录创建一个数据库,并用数据填充它。其中一个表Department有一个名为Description的列,该列声明为varchar(200)类型。对Description I执行INSERT命令时,出现错误: 错误1406:数据对于第1行的列“描述”来说太长。 我插入的所有字符串都小于150个字符。 以下是声明:< br > 下面是插入命令: 显然,这应该

  • 我使用的mysql2库与NodeJS。我在本地机器和服务器上有相同的代码和数据库结构。当我上传一张照片到“照片”表时,在我的本地机器上,它工作正常。当我使用服务器时,我得到以下错误: {错误:数据太长,列'照片'在第1行Packet.as错误(/srv/project/server/node_modules/mysql2/lib/数据包/packet.js:716: 13)在查询。Command.