【发布时间】:2019-03-13 17:51:14
【问题描述】:
我有一个像下面这样的 Jpa 方法。
Set<ApplicationMaterialFile> findAllByProcessInstanceIdAndApplicationMaterialIn(String processInstanceId, Collection<ApplicationMaterial> applicationMaterials);
这是调用上述 Spring Data JPA 方法的代码。这里调用上面的 Spring Data JPA 方法会抛出异常。
@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;
}
何时调用 Spring Data JPA 方法findAllByProcessInstanceIdAndApplicationMaterialIn 会抛出如下异常
原因:java.lang.IllegalArgumentException:参数值元素 [ApplicationMaterial(id=1, name=sdfsf, fileFormat=doc, 描述=dfsdfds,templateFileUrl=fsdfsdf,createdAt=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)
);
【问题讨论】:
-
您的表中是否使用了私有字符串文件格式?
-
是的,它在
application_material_library表中使用。并且列类型是varchar。 -
我不确定您是否对映射有任何问题,因为我们看不到您的表格字段。如果您可以确认所有映射都已正确配置并且保存新实体是否可以?
-
@huy 我删除了表并再次创建了它们。但它没有用。
-
同样的问题,如果您可以确认所有映射配置正确并且保存新实体是否可以?因为前提是映射正确。如果您确定映射,请尝试在方法上使用@Query 来定义而不是使用方法名称。
标签: java spring hibernate spring-data-jpa