Din kod fungerar som förväntat. Efter att du har implementerat Persistable du kan se det @CreatedDate anteckningen fungerar.
Visst att createdDate är null vid det andra anropet av save eftersom objektet redan finns i databasen och du uppdaterade det med createdDate = null . Som du kan se i dokumentationen för @CreatedDate :
Så att inte skriva över ditt createdDate med null vid det andra samtalet ska du hämta din kund från databasen med c = repository.findOne("test_id"); och uppdatera den sedan.