всем доброго времени суток,
У меня есть этот проект, в котором я использую ModelMapper для сопоставления своих сущностей с DTO и наоборот, а также имею класс с отношением @ElementCollection.Кажется, что маппер работает нормально для всех других методов, и он просто выводит сущность так, как я хочу, однако, когда дело доходит до удаления маппинга, я получаю следующую ошибку, напечатанную вместе с состоянием 500 http.вот ошибка:
"Ошибки отображения ModelMapper: \ r \ n \ r \ n1) Конвертер org.modelmapper.internal.converter.CollectionConverter@ddb7bc7 не смог преобразовать java.util.List в java.util.List. \ r \ n \ r \ n1 error "
вот код:
класс сущности:
@Entity
@Table(name = "quiz_engines")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(
value = {"lastModified"},
allowGetters = true
)
public class Engine implements Model {
@Id
@Column(name = "engine_id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY,optional = false, targetEntity = com.QCMGenerator.QCMGenerator.Model.Test.class)
@JoinColumn(name = "test_id", referencedColumnName = "test_id", nullable = false, updatable = false)
@OnDelete(action = OnDeleteAction.NO_ACTION)
@JsonIgnore
private Test test;
@Column(name = "quiz_name", nullable = false)
@NotNull
private String name;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "last_modified", nullable = false)
@LastModifiedDate
private Date lastModified;
@ElementCollection
@CollectionTable(name = "engine_constraints", joinColumns = @JoinColumn(name = "engine_id"))
private List<EngineConstraint> constraints;
public Engine() {
}
public Engine(@NotNull String name, List<EngineConstraint> constraints) {
this.name = name;
this.constraints = constraints;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Test getTest() {
return test;
}
public void setTest(Test test) {
this.test = test;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
public List<EngineConstraint> getConstraints() {
return constraints;
}
public void setConstraints(List<EngineConstraint> constraints) {
this.constraints = constraints;
}
}
класс DTO:
public class EngineDTO implements ModelDTO {
private Long id;
@JsonIgnore
private TestDTO test;
private String name;
private Date lastModified;
private List<EngineConstraint> constraints;
public EngineDTO() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public TestDTO getTest() {
return test;
}
public void setTest(TestDTO test) {
this.test = test;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
public List<EngineConstraint> getConstraints() {
return constraints;
}
public void setConstraints(List<EngineConstraint> constraints) {
this.constraints = constraints;
}
}
контроллер удаления:
@DeleteMapping("/{engineID}")
public ResponseEntity<NonPaginatedResponse> deleteEngine(
@PathVariable(value = "testID") Long testID,
@PathVariable(value = "engineID") Long engineID
){
if(!testRepo.existsById(testID)){
throw new ResourceNotFoundException("No test with the ID '"+testID+"' was found...");
}
return engineRepo.findById(engineID).map(engineFound -> {
engineRepo.delete(engineFound);
return ResponseEntity.status(HttpStatus.OK).body(
ResponseBodyBuilder.getSingleResponse(
convertToDTO(engineFound),
new ModelDTO[]{ convertToDTO(testRepo.findById(testID).get()) },
"delete"
)
);
}
).orElseThrow(
() -> new ResourceNotFoundException("No Engine with the ID '"+engineID+"' was found...")
);
}
надеюсь, что вы, ребята, можете помочь с этим, спасибо всем за ваше время и хорошего дня.