Hibernate注解如何设置MYSQL数据库的数据类型 错误Data truncation: Data too long for column 'artext' at row 1
今天在测试文章页面,上传保存文章的时候,发现向数据库写入数据,会出现如下错误
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'artext' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4188) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3032) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3551)这个错误的意思就是说,当前传入的数据太大了,无法保存
经过查询sql后台发现,该列的数据类型是varchar
varchar最多能保存255个字节,所以出现这个错误也就不难理解了
因为在Hibernate中,我们创建实体的注解格式一般如下
@Column(name = "artext", unique = false, nullable = false) public String getArtext() { return artext; } public void setArtext(String artext) { this.artext = artext; }这个注解表示这个字段不是唯一的,也不能为空
默认情况下,当Hibernate创建这个表时,该字段在数据库中数据类型时varchar类型
我们可以手动去数据库修改这个字段的类型,比如修改为LONGTEXT类型
我们也可以修改我们的实体中的对应字段,将其改为 LONGTEXT
LONGTEXT最大长度4294967295个字元 (2^32-1)
修改实体的注解代码如下
@Column(name = "artext", unique = false, nullable = false,columnDefinition="LONGTEXT NOT NULL") public String getArtext() { return artext; } public void setArtext(String artext) { this.artext = artext; }
如果您的配置不是注解形式,而是XML配置,那您在相应的位置添加如下代码即可
<column name="artext" not-null="true" sql-type="LONGTEXT"/>
[caption id="attachment_1579" align="alignnone" width="561"] Hibernate设置数据库的数据类型为LONGTEXT[/caption]
这样我们就设置好了该字段为LOINGTEXT类型
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情