Я создал следующую сущность и протестировал ее, используя h2:
@Getter
public class Topic {
@Id
private long id;
private final Title title;
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime lastModified;
// ...
}
TopicRepository
- пустой интерфейс.
Следующий тест не пройден с ошибкой, что createdAt
имеет значение null:
@RunWith(SpringRunner.class)
@SpringBootTest
public class BasicRepositoryTests {
@Autowired
TopicRepository topicRepository;
@Test
public void topicRepositoryWorks() {
val topic = new Topic();
val savedTopic = topicRepository.save(topic);
assertEquals(1, topicRepository.count());
assertNotNull(savedTopic.getLastModified(), "lastModified must be set");
assertNotNull(savedTopic.getCreatedAt(), "createdAt must be set");
topicRepository.delete(savedTopic);
assertEquals(0, topicRepository.count());
}
}
Мое приложение помечено @SpringBootApplication
и @EnableJdbcAuditing
.
Почему createdAt
все еще null
, lastModified
с другой стороны, не равно нулю?
Редактировать
Я изменил типы Topic.createdAt
и Topic.lastModified
на Instant
, которые не работали.
Кроме того, я добавил следующий метод, который, я думаю, должен обеспечивать значения для полей Instant
:
@Bean
public AuditorAware<Instant> instantAuditorAware() {
return () -> Optional.of(Instant.now());
}
К сожалению, хотя метод вызывается, createdAt
по-прежнему null
.