I think its because springs nullability annotations are configured to mark the argument to the equals method as non-nullable. Kotlin == only matches equals that accepts nulls. I think this should fix it. https://github.com/spring-projects/spring-batch/pull/4823