使用EclipseLink JPA绑定大于255个字符的字符串

The*_*tig 5 java sql jpa eclipselink

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

012-08-03 10:21:11.357 - UnitOfWork(32349505) - 异常[EclipseLink-4002](Eclipse Persistence Services - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException内部异常: java.sql.SQLDataException:尝试将VARCHAR'某些必须非常长的文本'缩小到255时遇到截断错误.错误代码:20000

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

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

干杯

Hau*_*idt 10

您需要注释该属性,以便将其保持为Clob.使用@Lob; 对于Strings,这将默认为Clob.请参阅此处获取文档.当然,VARCHAR如果手动创建数据库,则需要确保数据库列类型正确(即不是).