Váš kód funguje podle očekávání. Po implementaci Persistable můžete vidět, že @CreatedDate anotace funguje.
Ujistěte se, že createdDate je null při druhém volání save protože objekt již v databázi existuje a aktualizovali jste jej pomocí createdDate = null . Jak můžete vidět z dokumentace pro @CreatedDate :
Nepřepisujte tedy createdDate s null při druhém hovoru byste měli načíst svého zákazníka z databáze pomocí c = repository.findOne("test_id"); a poté jej aktualizujte.