#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)
.