Как мне проверить исключение нулевого указателя в типе данных ДАТЫ

#java #eclipse #nullpointerexception #talend

#java #eclipse #исключение nullpointerexception #talend

Вопрос:

введите описание изображения здесьУ нас есть инструмент интеграции данных Talend, который использует код 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.
  

Мы пытались :
Но у нас это не сработало.

Чтобы избежать null
row1.DNDB==null?»null»:row1.DNDB

Ответ №1:

row1.DNDB==null?"null":row1.DNDB не может работать: вы присваиваете выходному значению либо «null» (строка с двойными кавычками), либо row1.DNDB , которая должна быть датой. При компиляции у вас будет приведенное исключение.

Вы можете попробовать либо :

 Relational.ISNULL(row1.DNDB)?null:row1.DNDB
  

если вам нужен возвращаемый тип даты;
или

 Relational.ISNULL(row1.DNDB)?"null":TalendDate.formatDate("yyyy-MM-dd HH:mm:ss",row1.DNDB) 
  

если вам нужен тип возвращаемого значения String для обоих значений.

Также убедитесь, что ваш выходной столбец помечен как обнуляемый (флажок)

Комментарии:

1. Спасибо за ответ. Попробовав оба синтаксиса на компьютере. тем не менее, он жалуется на исключение Null.

2. Это единственное поле в вашем сопоставлении? Может ли эта ошибка быть связана с другим полем? В tMap вы можете попытаться снять флажок «умереть при ошибке» в «Настройках tMap» (верхняя левая часть окна tMap): тогда у вас будет второй вывод для отклонений.

3. Когда я попробовал это, снимите флажок «Умереть по ошибке», тогда задание выполнялось с меньшим количеством строк. исходное число строк 687, но оно выбирает только 650.

4. Но я хочу, чтобы все строки .. задание должно извлекать все 687 строк в выходных данных.

5. Пожалуйста, предоставьте скриншот вашего tMap, чтобы увидеть, что происходит.