“数据类型不一致: 应为 NUMBER, 但却获得 BINARY”解决方法
昨天用JPA写报表的SQL,在执行的时候一直报 “数据类型不一致: 应为 NUMBER, 但却获得 BINARY” 的错误,一开始我还不知道Oracle的数据类型和Java对应类型有所不同,逐行检查我的SQL,查看是哪段类型出了问题。
后面检查发现是下面这行语句出现了问题。
AND (ro.is_included_commission = ?35 OR ?35 IS NULL)
查了数据表中的这个is_included_commission字段类型,就是NUMBER类型,于是换了Integer类型,但是依旧报 “数据类型不一致: 应为 NUMBER, 但却获得 BINARY” 的错误,然后还特地去网上搜索了Oracle数据库类型对应java类型。
引用地址:http://blog.csdn.net/perny/article/details/7971003
SQL数据类型 | JDBC类型代码 | 标准的Java类型 | Oracle扩展的Java类型 |
---|---|---|---|
CHAR | java.sql.Types.CHAR | java.lang.String | oracle.sql.CHAR |
VARCHAR2 | java.sql.Types.VARCHAR | java.lang.String | oracle.sql.CHAR |
LONG | java.sql.Types.LONGVARCHAR | java.lang.String | oracle.sql.CHAR |
NUMBER | java.sql.Types.NUMERIC | java.math.BigDecimal | oracle.sql.NUMBER |
NUMBER | java.sql.Types.DECIMAL | java.math.BigDecimal | oracle.sql.NUMBER |
NUMBER | java.sql.Types.BIT | boolean | oracle.sql.NUMBER |
NUMBER | java.sql.Types.TINYINT | byte | oracle.sql.NUMBER |
NUMBER | java.sql.Types.SMALLINT | short | oracle.sql.NUMBER |
NUMBER | java.sql.Types.INTEGER | int | oracle.sql.NUMBER |
NUMBER | java.sql.Types.BIGINT | long | oracle.sql.NUMBER |
NUMBER | java.sql.Types.REAL | float | oracle.sql.NUMBER |
NUMBER | java.sql.Types.FLOAT | double | oracle.sql.NUMBER |
NUMBER | java.sql.Types.DOUBLE | double | oracle.sql.NUMBER |
RAW | java.sql.Types.BINARY | byte[] | oracle.sql.RAW |
RAW | java.sql.Types.VARBINARY | byte[] | oracle.sql.RAW |
LONGRAW | java.sql.Types.LONGVARBINARY | byte[] | oracle.sql.RAW |
DATE | java.sql.Types.DATE | java.sql.Date | oracle.sql.DATE |
DATE | java.sql.Types.TIME | java.sql.Time | oracle.sql.DATE |
TIMESTAMP | java.sql.Types.TIMESTAMP | java.sql.Timestamp | oracle.sql.TIMESTAMP |
因为NUMBER类型由于字段长度对应的Java类型有所不同,于是我把BigDecimal、Boolean、Byte、Short都给试了一遍,但还是报那个错。后面我才意识到是因为我值传的是null,JPA中不能参null值给number类型。
于是我采取了一个取巧的方法,如果是要传null值,就在dao层把参数赋为-1,然后修改SQL为如下语句。
AND (ro.is_included_commission = ?35 OR ?35 = '-1')
“数据类型不一致: 应为 NUMBER, 但却获得 BINARY”解决方法相关推荐
- 编译错误 错误:PL/SQL: ORA-00932: 数据类型不一致: 应为 DATE, 但却获得 NUMBER 行
文章目录 1. 现象 2. 分析 3. 解决方案 通过存储过程将临时B表中的数据同步到轨迹表中 1. 现象 PROCEDURE LABS.ASSET_LOANP 编译错误错误:PL/SQL: ORA- ...
- oracle创建视图类型为日期,oracle创建视图包含clob字段,报错:数据类型不一致:应为-,但却获得CLOB...
在oracle中创建视图的时候,语句中包含有clob类型的字段.视图创建语句大概如下: CREATE OR REPLACE FORCE VIEW "T_PROJECTS" (&qu ...
- Nginx报错:nginx: [error] invalid PID number ““ in “/run/nginx.pid“ 解决方法
服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错 nginx: [error] invalid PID number "" ...
- [LVM] Linux resize2fs: Bad magic number in super-block错误的解决方法
描述:当我LVM扩容逻辑卷区后,检查硬盘(lv)完整性和重置硬盘(lv)容量报错 错误截图: [root@localhost ~]# lvextend -L 246G /dev/cl/home Siz ...
- 没有CLOB类型却报ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
这个主要是在Oracle查询中用到了wm_concat()函数{进行对同一列取到多行数据合并到一行并用英文逗号","分开} 刚开始猜测在不同版本中导致这条数据返回值不一样产生的问题 ...
- tensorflow_yolov3 神经网络训练时train_loss和test_loss出现NaN(not a number)的原因和解决方法
训练到一定阶段,就全是Nan了 可能是代码问题,参考解决办法: 看tensorflow_yolov3作者回复说: 但我这貌似都训练到头不动了: 另外,再引用一篇写得比较好的文章: 参考文章1:训练神经 ...
- 【Vegas原创】exp时,ORA-00932: 数据类型不一致解决方法
现象: EXP-00056: 遇到 ORACLE 错误 932 ORA-00932: 数据类型不一致: 应为 BLOB, CLOB, 但却获得 CHAR EXP-00000: 导出终止失败 解决方法: ...
- Oracle关联查询-数据类型不一致问题 ORA-01722: 无效数字
一.存在表A和表B,都包含字段user_no,但数据类型不一致,如下: create table A ( user_id varchar2(20), user_no number(12,0), xxx ...
- MySQL数据类型不一致_数据类型不一致导致的SQL不走索引
前几天,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据量也不是很大.再查看执行计划,发现是执行路径错误导致 前几天,,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据 ...
- ODI Studio(问题7)ORA-00932:数据类型不一致--BLOB
问题:数据类型不一致:应为-,但却获得BLOB. 措施: 1.在流中,设置源表的加载模块为:LKM SQL to SQL BLOB(JYTHON). 2.设置目标表的集成模块为:IKM SQL Inc ...
最新文章
- 网络工程师_域名知识点
- 深度学习已入末路,谁能引领下一代AI?
- 二维非稳态导热微分方程_室内湿度影响验证:非真空型稳态法导热仪的正确使用方式...
- Linux加法简单程序,Android应用程序的开发目录——简单的加法计算示例
- netbsd配置gnome桌面
- 【registry】 javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
- AngularJS 学习笔记 (六) 基本概念和用法 之 Service与Provider
- Mysql 存储类型范围
- 办公软件 -- Office 365免费下载安装
- LaTex 插入超链接
- Python 列表,for循环,元组的使用【修改、添加、删除、排序、切片】w
- linux 配额不起作用,Linux 配额
- 学习编程悟出8个字《精辟》!
- 模板匹配及其源代码---Edge Based Template Matching
- can总线rollingcounter_CAN总线笔记
- Windows 下载WebStorm
- 每日一题-75(向公司CEO汇报工作的所有人)
- 加强版Apktool堪称逆向神器
- 一切系统都是分布式的
- 按音量键和按Fn+音量键,笔记本电脑均没反应的解决办法