如何检查 DATE 数据类型中的空指针异常
How do i check null pointer exception in DATE data type
我们有 Talend Data Integration 工具,它在将信息从源系统发送到目标系统时使用 eclipse 代码。
获取错误
Exception in component tMap_1
java.lang.NullPointerException
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.tJDBCInput_2Process(Copy_of_ReadSysproAndSendMail.java:1937)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.runJobInTOS(Copy_of_ReadSysproAndSendMail.java:5086)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.main(Copy_of_ReadSysproAndSendMail.java:4885)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.tJDBCInput_2Process(Copy_of_ReadSysproAndSendMail.java:2098)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.runJobInTOS(Copy_of_ReadSysproAndSendMail.java:5355)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.main(Copy_of_ReadSysproAndSendMail.java:5154)
Job Copy_of_ReadSysproAndSendMail ended at 23:16 03/10/2016. [exit code=0]
输入:
日期数据类型是 tmap 组件中空值的来源
DNDB date type(source) ---->row1.DNDB(output) is Date data type. both are nullable.
我们试过了:
但是对我们没有用。
避免空值
row1.DNDB==null?"null":row1.DNDB
row1.DNDB==null?"null":row1.DNDB
无法工作:您正在为输出值分配 "null" (字符串,带双引号)或 row1.DNDB ,这应该是一个日期。您将在编译中出现强制转换异常。
你可以试试:
Relational.ISNULL(row1.DNDB)?null:row1.DNDB
如果您想要日期 return 类型;
或
Relational.ISNULL(row1.DNDB)?"null":TalendDate.formatDate("yyyy-MM-dd HH:mm:ss",row1.DNDB)
如果两个值都需要一个字符串 return 类型。
同时检查您的输出列是否标记为可为空(复选框)
Exception in component tMap_1
java.lang.NullPointerException
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.tJDBCInput_2Process(Copy_of_ReadSysproAndSendMail.java:1937)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.runJobInTOS(Copy_of_ReadSysproAndSendMail.java:5086)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.main(Copy_of_ReadSysproAndSendMail.java:4885)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.tJDBCInput_2Process(Copy_of_ReadSysproAndSendMail.java:2098)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.runJobInTOS(Copy_of_ReadSysproAndSendMail.java:5355)
at bigdata.copy_of_readsysproandsendmail_0_1.Copy_of_ReadSysproAndSendMail.main(Copy_of_ReadSysproAndSendMail.java:5154)
Job Copy_of_ReadSysproAndSendMail ended at 23:16 03/10/2016. [exit code=0]
输入:
日期数据类型是 tmap 组件中空值的来源
DNDB date type(source) ---->row1.DNDB(output) is Date data type. both are nullable.
我们试过了: 但是对我们没有用。
避免空值
row1.DNDB==null?"null":row1.DNDB
row1.DNDB==null?"null":row1.DNDB
无法工作:您正在为输出值分配 "null" (字符串,带双引号)或 row1.DNDB ,这应该是一个日期。您将在编译中出现强制转换异常。
你可以试试:
Relational.ISNULL(row1.DNDB)?null:row1.DNDB
如果您想要日期 return 类型; 或
Relational.ISNULL(row1.DNDB)?"null":TalendDate.formatDate("yyyy-MM-dd HH:mm:ss",row1.DNDB)
如果两个值都需要一个字符串 return 类型。
同时检查您的输出列是否标记为可为空(复选框)