son*_*rin 8 hibernate h2 spring-data-jpa
我有一个使用H2进行存储的spring-data-jpa应用程序。当我尝试将某些数据解析到表中时,出现错误:
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 22001, SQLState: 22001
2014-06-13 15:42:07.062 ERROR 66742 --- [nio-9001-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Value too long for column "REMARKS VARCHAR(255)": "'""DOB 31 Jan 1939; Cedula No. 6068015 (Colombia); alt. Cedula No. 6067015 (Colombia); Passport T321642 (Colombia); alt. Passport... (259)"; SQL statement:
insert into sdn (call_sign, grt, program, remarks, sdn_num, sdn_type, title, tonnage, vess_flag, vess_owner, vess_type, ent_num) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-172]
Run Code Online (Sandbox Code Playgroud)
我有一个表定义为:
CREATE TABLE IF NOT EXISTS Sdn (
entNum BIGINT (11) NOT NULL,
sdnName VARCHAR(700) NULL,
sdnType VARCHAR(24) NULL,
program VARCHAR(100) NULL,
title VARCHAR(4000) NULL,
callSign VARCHAR(20) NULL,
vessType VARCHAR(50) NULL,
tonnage VARCHAR(30) NULL,
grt VARCHAR(20) NULL,
vessFlag VARCHAR(80) NULL,
vessOwner VARCHAR(300) NULL,
remarks CLOB NULL,
UNIQUE KEY entityNum(entNum)
);
Run Code Online (Sandbox Code Playgroud)
我的@Entity类为:
@Entity
public class Sdn {
@Id
private long entNum;
private String sdnName;
private String sdnType;
private String program;
private String title;
private String callSign;
private String vessType;
private String tonnage;
private String grt;
private String vessFlag;
private String vessOwner;
private String remarks;
Run Code Online (Sandbox Code Playgroud)
这是有问题的记录,它显然足够小以适合该列:
"DOB 31 Jan 1939; Cedula No. 9876543 (cccccccc); alt. Cedula No. 6067015 (cccccccc); Passport T123456 (cccccccc); alt. Passport 1234567 (Comoros); alt. Passport 12345 (Argentina); alt. Passport 87654321 (ppppppppp); a.k.a. 'THE TTTT PLAYER'; a.k.a. 'NAME1'."
Run Code Online (Sandbox Code Playgroud)
我所能想到的是分号或其他无效字符引发了此异常。
谁能在这里看到问题,并提出替代解决方案?
您声明的表定义:
CREATE TABLE IF NOT EXISTS Sdn (
entNum BIGINT (11) NOT NULL,
sdnName VARCHAR(700) NULL,
sdnType VARCHAR(24) NULL,
program VARCHAR(100) NULL,
title VARCHAR(4000) NULL,
callSign VARCHAR(20) NULL,
vessType VARCHAR(50) NULL,
tonnage VARCHAR(30) NULL,
grt VARCHAR(20) NULL,
vessFlag VARCHAR(80) NULL,
vessOwner VARCHAR(300) NULL,
remarks CLOB NULL,
UNIQUE KEY entityNum(entNum)
);
Run Code Online (Sandbox Code Playgroud)
与错误消息不同,该错误消息说“备注”列是VARCHAR(255)而不是CLOB。
您的值确实超过了255个字符的限制。
您可能需要更改表以匹配您的实际想法。
您的实体似乎没有定义列类型的JPA或Hibernate批注。您可能还需要在remarks字段上添加注释,以将其标识为CLOB。
| 归档时间: |
|
| 查看次数: |
7189 次 |
| 最近记录: |