#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, чтобы увидеть, что происходит.