我有大量原始数据(类型为SqlData对象),并尝试使用创建的用户定义类型插入Oracle.问题仅适用于具有一些null属性的记录.我得到这些记录的NullPointer异常 – 因为它试图在null对象上调用toString.有没有办法为Long列...

我有大量原始数据(类型为SqlData对象),并尝试使用创建的用户定义类型插入Oracle.
问题仅适用于具有一些null属性的记录.
我得到这些记录的NullPointer异常 – 因为它试图在null对象上调用toString.
有没有办法为Long列写入空值(在SQLOutput流中)?
我知道这可以通过改变为String类型来实现,但是我无法触及PL / SQL函数,因为它在很多地方使用过.
public classMyClass extends MyBaseType implements SQLData {
public void writeSQL(SQLOutput stream) throws SQLException {
stream.writeString(getSource());
stream.writeTimestamp(getDtm());
stream.writeString(getUniqueId());
stream.writeString(getType());
stream.writeLong(getResponseCode());
当getResponseCode()为null时,最后一行会导致NullPointer异常.
知道如何处理这个而不改变类型(到String)?
尝试的最后一个选项是,
private void writeNullPossibleNumber(SQLOutput stream, Integer intValue) throws SQLException {
if (intValue==null) {
stream.writeBigDecimal(null);
} else {
stream.writeInt(intValue);
}
}
上述解决方案正常运行.
参考:
http://docs.oracle.com/cd/A87860_01/doc/java.817/a81357/sampcod3.htm
谢谢你的帮助
解决方法:
如您所见,SQLOutput.writeLong等待原始的长,但您似乎尝试提供包装器Long.在这种情况下,当然,null不能转换为任何原语.
所以,或者只是在writeLong之前添加空检查,或者更改整个逻辑,如果不是你可以将空值写入DB.
本文标题为:java – 如何在SqlData实现中为Long类型属性传递NULL值?


基础教程推荐
- java – 如何在hql或jpql查询中查询两个不同的数据库(在不同的服务器上)? 2023-10-30
- 如何加密配置文件里的敏感数据 2023-01-13
- springboot自定义starter方法及注解实例 2023-03-30
- SpringBoot定时任务设计之时间轮案例原理详解 2023-06-06
- Java C++题解leetcode902最大为N的数字组合数位DP 2023-06-17
- SpringMVC按Ctrl上传多个文件的方法 2023-05-13
- Seata 环境搭建部署过程 2023-06-24
- 学习java一定要知道的垃圾收集器 2023-02-26
- 一文搞懂Java中的反射机制 2023-03-11
- 详解Java信号量Semaphore的原理及使用 2022-12-02