I didn't say it would solve this issue. It's just very important because it will solve future errors.
readResolve means that the de-serialization process will not return the serialized object but the object returned by the method. This means that the non-serialized singleton instance will be returned, which still has its department set.
subject: Getting transient variable values while deserializing