今天在做删除歌曲的时候,出现org.hibernate.ObjectNotFoundException: No row with the given identifier exists:[cn..entity.Song#1]的问题,不过查看表后,id的值是存在的。
经过一番查找,发现表中id字段的类型是CHAR(22),以前记得跟VARCHAR2有所区别,即CHAR 的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
其中后台产生的SQL如下:
select song0_.ID as ID7_0_,song0_.TITLE as TITLE7_0_ from SONG song0_ where song0_.ID='1';
由上面可知,虽然你看到表中有id值为1,实际上它的值因为1+19个空格的长度,所以查找不到,如:
select * from song t where t.id = '1' 可以查到数据
select * from song t where t.id = '1 '可以查到数据
select * from song t where t.title = 'lady gaga'可以查到数据
select * from song t where t.title = 'lady gaga '不可以查到数据
有空,欢迎到
红番薯逛逛
- 大小: 10.2 KB
- 大小: 10.6 KB
- 大小: 3.1 KB
- 大小: 9.3 KB
- 大小: 4.7 KB
分享到:
相关推荐
浅析Oracle中char和varchar2的区别 电脑资料.docx
oracle char,varchar,varchar2的区别和使用方法 非本人总结,但是说的挺好的! 欢迎下载
oracle中varchar2(byte)和varchar2(char) 细节决定成败,大家在设计数据库建表的时候一定要注意。
char是定长的 char(10) varchar2(10) 同样存 a ,char占用了10个字符,varchar2 ... 您可能感兴趣的文章:oracle to_char函数将number转成stringOracle to_char函数的使用方法SQL中Charindex和Oracle中对应的函数Instr
NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()数据类型分别与CHAR() 和 VARCHAR2()类型是相同的,只不过它们用来存储NLS(National Language Support)数据。 LONG LONG 数据类型是一个遗留下来的而且在将来不会...
Oracle接收长度大于4000的字符串 Oracle接收长度大于4000的字符串
3、NCHAR和nvarchar2,NCHAR和CHAR区别在于NCHAR用来存储Unicode字符集类型,即双字节字符数据,CHAR是一个字节,而NCAHR是一个字符(两个字节),前者是CHAR(1)无法插入‘的’,后者是NCHAR(1)可以插入‘的’ ...
PB商品进销存管理系统 ... ZLM Char N 2 中类码(外键) XLM Char N 2 小类码(外键) SPMC Varchar2 N 200 商品名称 CBCBH Char Y 5 出版社编号(外键) ................. ................ 管理系统数据字典
AccountInfo VarChar2(1000), TransferMethod Char(1), --A: ASCII, E: EBCDIC, I: IMAGE TransferOption Char(1), LocalDirectory VarChar2(30), LastReply VarChar2(32767 ) ); ...
Oracle主要 Oracle主要 数据类型 4-1 Character 数据类型 Number 数据类型 Date 数据类型 Raw 和 Long Raw 数据类型 LOB 数据类型 Oracle 主要数据类型 4-2 Character 数据类型 ― Char ― Varchar2 ― Long Number ...
as_OraVersion in VarChar default 'N' --标志位:Y:写入Oracle版本信息 ); --序号自动递增计算 --e.g.: 输入:HLXU99349021,返回:HLXU99349022 --范例: Select UTL_INet.f_AutoNum( 'HLXU99349021' )...
city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并...
、string是数据库中类型为CHAR或VARCHAR2的列名(或常量串); <2>、set是要截断的字符,set必须用单引号括起,方括号表示set(加上前面的逗号)是可选的。 如果没有字符,函数则缺省自动截断空格;
默认情况下,没有空白填充,因此,例如,CHAR(4)中的“ a”不等于“ a”。 如果为真,则这两个将相等。 如何使用? 添加Maven依赖项 < groupId>org.shenjia < artifactId>oracle-char-query < version>1.0.0...
Oracle数据类型说明,CHAR VARCHAR2 NCHAR NVARCHAR2 等
字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符),而CHAR数值被限制为255字符(在ORACLE8中是2000).当在过程性语句中使用时,它们可以被...
下面接着看下oracle中varchar类型的日期格式转换date类型 oracle中varchar类型的日期格式转换date类型 SELECT to_char(to_date(m.ma_datetime,'yyyy-MM-dd hh24:mi:ss'), 'yyyyMMdd') FROM my_task m; m.ma_datet
实际工作中,难免会遇到序列号生成问题,下面是一个简单的序列号生成函数 (1)创建自定义序列号配置表如下: –自定义序列 create table S_AUTOCODE ( pk1 VARCHAR2(32) primary key, atype VARCHAR2(20...