我继承了一个项目,该项目使用 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/