微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何在SqlData实现中为Long类型属性传递NULL值?

我有大量原始数据(类型为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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐