diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
index 15aeabc53..f8a36555e 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
@@ -45,7 +45,7 @@ private static class PojoImplementation
private final String fieldName;
- private Field field;
+ private transient Field field;
private PojoImplementation(final String fieldName) {
this.fieldName = fieldName;
@@ -54,6 +54,10 @@ private PojoImplementation(final String fieldName) {
@Override
@SuppressWarnings("unchecked")
public Output apply(final Input input) {
+ if (input == null) {
+ return null;
+ }
+
// Initialization code.
if (this.field == null) {
@@ -127,7 +131,7 @@ public static ProjectionDescriptor createForRecords(final Record
}
private static FunctionDescriptor.SerializableFunction createPojoJavaImplementation(
- final String[] fieldNames, final BasicDataUnitType inputType) {
+ final String[] fieldNames) {
// Get the names of the fields to be projected.
if (fieldNames.length != 1) {
return t -> {
@@ -185,7 +189,7 @@ public ProjectionDescriptor(final Class inputTypeClass,
*/
public ProjectionDescriptor(final BasicDataUnitType inputType, final BasicDataUnitType