ModelMapper не удалось преобразовать java.util.list в java.util.list на DeleteMapping - PullRequest
0 голосов
/ 02 декабря 2018

всем доброго времени суток,

У меня есть этот проект, в котором я использую 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...")
    );
}

надеюсь, что вы, ребята, можете помочь с этим, спасибо всем за ваше время и хорошего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...