java - 使用 EclipseLink JPA 绑定(bind)大于 255 个字符的字符串

标签 java sql jpa eclipselink

我继承了一个项目,该项目使用 EclipseLink JPA 将对象保存到任何 SQL 数据库中。目前,它带有一个本地 Derby DB 发行版。在一些测试中,我发现该程序会抛出以下异常:

012-08-03 10:21:11.357--UnitOfWork(32349505)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLDataException: A truncation error was encountered trying to shrink VARCHAR 'some necessarily really long text' to length 255. Error Code: 20000

显然,VARCHAR(通常)不适合存储大于 255 个字符的字符串,但我没有找到将对象变量明确分配给 VARCHAR 字段的代码片段。我知道 JPA 或 EclipseLink 会自动为您分配这个,所以我的问题是:

如何确保 EclipseLink/JPA 存储大于 255 个字符的字符串?

干杯

最佳答案

您需要注释该属性,以便它作为 Clob 持久化。使用@Lob;对于 String,这将默认为 Clob。参见 here对于文档。当然,如果您手动创建数据库,则需要确保数据库列类型正确(即不是 VARCHAR)。

关于java - 使用 EclipseLink JPA 绑定(bind)大于 255 个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793320/

相关文章:

JPA 托管实体的 Java 处理程序

java - getMap() 出错?

java - 如何使一个类将自身复制到另一个可以用Java执行的具有不同名称的类中?

php - MYSQL/PHP 选择相同的值

sql - SQL 中的 tableName.* 是什么

sql - sql minus的jpa 2.0标准api表达式

java - Hibernate 上与 @SecondaryTable 的多对一关系

java - 无法在网页中查看数据库中存储的记录

java - Mvel 迭代一个列表

JavaFX幻灯片动画闪烁