hibernate - 使用 Hibernate 问题持久化长字符串

标签 hibernate annotations hibernate-annotations

在我的 Web 应用程序中,我有一个文本区域,其用户填充的内容最终通过 Hibernate 持久化到数据库中。我一直遇到一个问题,当用户输入超过一定长度时,持久化失败。有没有办法通过 Hibernate Annotations 或在配置中指示此特定字段应支持更长的字符串,并且数据库列类型应反射(reflect)这一点?

这是我得到的异常(exception):

Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'introText' at row 1
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2007)
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1443)
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
    ... 41 more

最佳答案

您可以在注释上使用长度参数,如下所示:

@Column(length=1000)

或者,如果您的数据库支持,您可以将列类型更改为类似文本的内容,如下所示:
@Column(columnDefinition="text")

如果您使用 hbm2ddl 更新,则将创建该列以使用该类型(特定于数据库)。

关于hibernate - 使用 Hibernate 问题持久化长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112667/

相关文章:

java - 使用 Hibernate Annotations 的 View 对象的 SQL 错误

java - 用于 Java 持久性的 JPA 或 Hibernate?

spring-boot - 如何按顺序检查多个 Spring DTO 验证?

java - 列类型的奇怪 Hibernate 异常

java - 通过注释向 Java Bean 添加验证

Java:如何简化复杂的注解

java - 如何在字段级别创建元注释?

当总和对于字段类型而言太大时,来自 Projections.sum 的 Hibernate 错误

hibernate - 如果数据在进入数据库之前需要修剪,您将其放入哪一层

java - 在 hibernate 中为实体 bean 属性编写注释