Java 使用EclipseLink JPA绑定大于255个字符的字符串
我继承了一个使用EclipseLink JPA将对象持久化到任何SQL数据库的项目。目前,它附带了一个本地Derby DB发行版。在一些测试中,我发现程序将抛出以下异常: 012-08-03 10:21:11.357——工作单元(32349505)——异常 [EclipseLink-4002](Eclipse持久性服务)- 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException-Internal 异常:java.sql.SQLDataException:发生截断错误 尝试将VARCHAR“某些必须非常长的文本”压缩到长度255时遇到问题。错误代码:20000 显然,VARCHAR(通常)不适合存储大于255个字符的字符串,但我没有找到将objects变量显式分配给VARCHAR字段的代码片段。我知道JPA或EclipseLink会自动为您分配这个,所以我的问题是,我还没有找到一个简单的答案: 如何确保EclipseLink/JPA存储大于255个字符的字符串Java 使用EclipseLink JPA绑定大于255个字符的字符串,java,sql,jpa,eclipselink,Java,Sql,Jpa,Eclipselink,我继承了一个使用EclipseLink JPA将对象持久化到任何SQL数据库的项目。目前,它附带了一个本地Derby DB发行版。在一些测试中,我发现程序将抛出以下异常: 012-08-03 10:21:11.357——工作单元(32349505)——异常 [EclipseLink-4002](Eclipse持久性服务)- 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException-Internal 异
干杯您需要对属性进行注释,以便将其持久化为
Clob
。使用@Lob
;对于String
s,这将默认为Clob
。有关文档,请参阅。当然,如果手动创建数据库,则需要确保数据库列类型正确(即不是VARCHAR
)。我向您展示了绑定大于255个字符的字符串的数据类型。看这个,
Java类型-byte[],Java.lang.byte[],Java.sql.Clob
JavaDB、Derby、CloudScape-CLOB(64000)
甲骨文长
DB2-CLOB(64000)
Sybase-文本
MSSQL-文本
MySQL-TEXT(64000)在许多环境中,字符串类型的@Column限制大于255,例如4kB。 您需要使用“长度”来更改默认值 @列(长度=1024) 串样