Элемент значения параметра Jpa [xxx] не соответствует ожидаемому типу [xxx] - PullRequest
0 голосов
/ 09 октября 2018

У меня есть метод Jpa, как показано ниже.

Set<ApplicationMaterialFile> findAllByProcessInstanceIdAndApplicationMaterialIn(String processInstanceId, Collection<ApplicationMaterial> applicationMaterials);

Это код для вызова вышеуказанного метода Spring Data JPA.И здесь будет выдано исключение при вызове вышеуказанного метода JPA Spring Data.

@Override
    public Set<ApplicationMaterialFile> getAllByProcessInstanceIdApplicationMaterialIds(String processInstanceId, Set<Long> applicationMaterialId) {
        List<ApplicationMaterial> applicationMaterials = applicationMaterialService.getAllByIdIfNotExistsThenThrowException(applicationMaterialId);

        return applicationMaterialFileRepository.findAllByProcessInstanceIdAndApplicationMaterialIn(processInstanceId, applicationMaterials);
    }

Вот структура сущности ApplicationMaterial.

/**
 * 
 * @see <a href="https://code.aliyun.com/butterfly-effect/backend/wikis/plans"
 * @author himly z1399956473@gamil.com
 */
@Table(name = "application_material_library")
@Entity
@EntityListeners(AuditingEntityListener.class)
@Data
@ToString(exclude = {"university"})
@EqualsAndHashCode(exclude = {"university"})
public class ApplicationMaterial {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    private String fileFormat;


    private String description;


    private String templateFileUrl;


    @JsonIgnore
    @ManyToOne
    private University university;


    @CreatedDate
    @Column(nullable = false)
    private Timestamp createdAt;


    @LastModifiedDate
    @Column(nullable = false)
    private Timestamp updatedAt;
}

Когда вызывать метод JPA Spring Data findAllByProcessInstanceIdAndApplicationMaterialIn вызовет исключение, как показано ниже

Причина: java.lang.IllegalArgumentException: элемент значения параметра [ApplicationMaterial (id = 1, name = sdfsf, fileFormat = doc, description = dfsdfds, templateFileUrl = fsdfsdf, созданный At = 2018-09-26 16: 54: 09.297, updatedAt = 2018-09-26 16: 54: 23.451)] не соответствуетожидаемый тип [com.hikedu.backend.model.ApplicationMaterial (n / a)]

Может кто-нибудь помочь мне?

Обновление:

Структура таблицы:

-- auto-generated definition
create table application_material_library
(
  id                bigint auto_increment
    primary key,
  created_at        datetime(6)  not null,
  description       varchar(255) null,
  file_format       varchar(255) null,
  name              varchar(255) not null,
  template_file_url varchar(255) null,
  updated_at        datetime(6)  not null,
  university_id     bigint       null,
  constraint FK9kuemh1kjhyt8u16sqw6i6t59
  foreign key (university_id) references universities (id)
);

1 Ответ

0 голосов
/ 09 октября 2018

Spring Data, похоже, не находит реализацию вашего пользовательского метода.

Поэтому он интерпретирует метод как метод производного запроса и жалуется, что типы параметров не соответствуют ожидаемым.Ошибка странная, поскольку она жалуется, хотя типы, кажется, совпадают.Но это не твоя проблема здесь.Проблема в том, что пользовательский метод не найден.

Этот ответ описывает, как выполнить пользовательскую реализацию в зависимости от используемой версии Spring Data .

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