Implementé SpringBoot Auditable y todo funciona bien, excepto que createdBy proporciona una marca de tiempo.
Aquí está mi clase auditable:
@Getter @Setter public class Auditable { @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; @CreatedBy private ObjectId createdBy; @LastModifiedBy private ObjectId updatedBy; }Y aquí está mi clase AuditorAwareImpl:
public class AuditorAwareImpl implements AuditorAware<ObjectId> { @Override public Optional<ObjectId> getCurrentAuditor() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); ObjectId userId = null; if (authentication != null) { UserDetails userDetails = (UserDetails) authentication.getPrincipal(); userId = new ObjectId(userDetails.getId()); } return Optional.of(userId); } }Está (ObjectId) guardando bien en DB. Pero cuando recupero ese registro, me crean con un formato diferente en lugar de ObjectId:
Alguien me puede ayudar con esto por favor?
Simplemente agregue este bean y convierta el ObjectId en String.
Dependencia
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.0.rc1</version> </dependency>Y agrega el frijol
@SpringBootApplication public class DivisionServiceApplication { public static void main(String[] args) { SpringApplication.run(DivisionServiceApplication.class, args); } @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { return builder -> builder.serializerByType(ObjectId.class, new ToStringSerializer()); } }