Вашият код работи според очакванията. След като внедрите Persistable можете да видите, че @CreatedDate анотацията работи.
Разбира се, че createdDate е null при второто извикване на save защото обектът вече съществува в базата данни и сте го актуализирали с createdDate = null . Както можете да видите от документацията за @CreatedDate :
За да не презапишете вашата createdDate с null при второто извикване трябва да извлечете клиента си от базата данни с c = repository.findOne("test_id"); и след това го актуализирайте.