SpringBoot启动时报错:
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: org.springframework.web.multipart.MultipartFile, at table: attachment, for columns: [org.hibernate.mapping.Column(file)]
原因是有一个实体类里用MultipartFile类型定义了一个文件变量,本意是想用来存储文件的,代码如下:
/**
* file
*/
@Column(nullable = false)
private MultipartFile file;
这里重点关注这句话:
Could not determine type for: org.springframework.web.multipart.MultipartFile
意思是自动建表的时候编译器不能确定MultipartFile这个类型在数据库中应该对应什么类型,而文件在数据库中是以二进制存储的,所以把实体类的代码稍作修改:
/**
* file
*/
@Column(nullable = false,columnDefinition = "MediumBlob")
private byte[] file;
然后启动,问题解决。
tips:
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G