Как использовать пример домена Spring Проверяемый домен Spring

#java #spring #spring-data-jpa #spring-data

Вопрос:

У меня есть следующая проблема Spring Data Domain Example с использованием объекта, который реализует Spring Data Domain Auditable .

Ошибка : org.springframework.dao.InvalidDataAccessApiUsageException: Значение параметра [Необязательно.пусто] не соответствует ожидаемому типу [java.time.LocalDateTime (n/a)]; вложенное исключение-java.lang.Исключение IllegalArgumentException: Значение параметра [Необязательно.пусто] не соответствует ожидаемому типу [java.time.Местное время (n/a)]

Сущность :

 import org.springframework.data.domain.Auditable;

@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "my_table")
@Builder
public class MyEntity implements Serializable, Auditable<String, Integer, LocalDateTime>

    @Getter
    @Setter
    @Id
    @Column(name = "my_table_id", nullable = false)
    private Integer id;

    // Some fields
    // ...

    // AUDIT
    @Column(name = "my_table_created_by")
    @CreatedBy
    private String createdBy;
    
    @Column(name = "my_table_created_date")
    @CreatedDate
    @Type(type = "org.jadira.usertype.dateandtime.threeten.PersistentLocalDateTime")
    private LocalDateTime createdDate;
    
    @Column(name = "my_table_last_modified_by")
    @LastModifiedBy
    private String lastModifiedBy;
    
    @Column(name = "my_table_last_modified_date")
    @LastModifiedDate
    @Type(type = "org.jadira.usertype.dateandtime.threeten.PersistentLocalDateTime")
    private LocalDateTime lastModifiedDate;
    
    @Override
    public boolean isNew()
    {
        return id == null;
    }
    
    @NotNull
    @Override
    public Optional<String> getCreatedBy()
    {
        return Optional.ofNullable(createdBy);
    }
    
    @Override
    public void setCreatedBy(@NotNull String createdBy)
    {
        this.createdBy = createdBy;
    }
    
    @NotNull
    @Override
    public Optional<LocalDateTime> getCreatedDate()
    {
        return Optional.ofNullable(createdDate);
    }
    
    @Override
    public void setCreatedDate(
            @NotNull
                    LocalDateTime creationDate)
    {
        this.createdDate = creationDate;
    }
    
    @NotNull
    @Override
    public Optional<String> getLastModifiedBy()
    {
        return Optional.ofNullable(lastModifiedBy);
    }
    
    @Override
    public void setLastModifiedBy(@NotNull String lastModifiedBy)
    {
        this.lastModifiedBy = lastModifiedBy;
    }
    
    @NotNull
    @Override
    public Optional<LocalDateTime> getLastModifiedDate()
    {
        return Optional.ofNullable(lastModifiedDate);
    }
    
    @Override
    public void setLastModifiedDate(@NotNull LocalDateTime lastModifiedDate)
    {
        this.lastModifiedDate = lastModifiedDate;
    }

}

 

Тест :

 import org.springframework.data.domain.Example;

@Test
public void test()
{
    MyEntity entity = MyEntity.builder()
         .someField("someValue")
         .build();

    List<MyEntity> entities = repository.findAll(Example.of(entity));
}
 

Я предполагаю , что это связано с Optional Methods тем, что у меня есть Auditable , но я не вижу, как решить эту проблему.
Это работает, если я дублирую класс сущности без Auditable , но он не чистый.

Ответ №1:

Исправьте, мне не нужно реализовывать Auditable , так как я уже использую @EntityListeners(AuditingEntityListener.class) .