次のエンティティを作成し、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
null でないのはなぜですか?
編集
Topic.createdAt
と の型をに変更しましたがTopic.lastModified
、Instant
機能しませんでした。
Instant
また、次のメソッドを追加しました。これは、フィールドに値を提供する必要があると思います。
@Bean
public AuditorAware<Instant> instantAuditorAware() {
return () -> Optional.of(Instant.now());
}
悲しいことに、メソッドは呼び出されますが、createdAt
まだnull
.