Su código está funcionando como se esperaba. Después de implementar Persistable puedes ver que @CreatedDate la anotación está funcionando.
Seguro que createdDate es null en la segunda llamada de save porque el objeto ya existe en la base de datos y lo actualizó con createdDate = null . Como puede ver en la documentación de @CreatedDate :
Para no sobrescribir su createdDate con null en la segunda llamada, debe recuperar a su cliente de la base de datos con c = repository.findOne("test_id"); y luego actualícelo.