Il tuo codice funziona come previsto. Dopo aver implementato Persistable puoi vedere quel @CreatedDate l'annotazione funziona.
Certo che createdDate è null alla seconda chiamata di save perché l'oggetto esiste già nel database e l'hai aggiornato con createdDate = null . Come puoi vedere dalla documentazione per @CreatedDate :
Quindi non sovrascrivere il tuo createdDate con null alla seconda chiamata dovresti recuperare il tuo cliente dal database con c = repository.findOne("test_id"); e poi aggiornalo.