1

次のエンティティを作成し、h2 を使用してテストしました。

@Getter
public class Topic {

    @Id
    private long id;

    private final Title title;

    @CreatedDate
    private LocalDateTime createdAt;

    @LastModifiedDate
    private LocalDateTime lastModified;

    // ...
}

TopicRepository空のインターフェイスです。

次のテストは、createdAtnullのエラーで失敗します。

@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それでもnulllastModifiednull でないのはなぜですか?

編集

Topic.createdAtと の型をに変更しましたがTopic.lastModifiedInstant機能しませんでした。

Instantまた、次のメソッドを追加しました。これは、フィールドに値を提供する必要があると思います。

@Bean
public AuditorAware<Instant> instantAuditorAware() {
    return () -> Optional.of(Instant.now());
}

悲しいことに、メソッドは呼び出されますが、createdAtまだnull.

4

1 に答える 1