Can you copy the contents of your parent Writable readField and write methods (not the ones youve already posted)
Another thing you could try is if you know you have two identical keys, can you write a unit test to examine the result of compareTo for two instances to confirm the correct behavior (even going as far as serializing and deserializing before the comparison) Finally just to confirm, you dont have any group or order comparators registered?
