JPA 与 multipartfile 的一对一关系

Posted

技术标签:

【中文标题】JPA 与 multipartfile 的一对一关系【英文标题】:one to one relationship JPA with multipartfile 【发布时间】:2020-11-12 15:13:25 【问题描述】:

我显然不知道如何与 JPA 建立 oneToOne 关系。

文章实体

@Entity
public class Article 

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String title;

private String content;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "files_id", referencedColumnName = "id")
private MultipartFile file;

文件实体

@Entity
@Table(name = "files")
public class DBFile 
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    private String id;

    private String fileName;

    private String fileType;

    @Lob
    private byte[] data;

    @OneToOne(mappedBy = "files")
    private Article article;

终端

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.test.webservices.article.Article.file references an unknown entity: org.springframework.web.multipart.MultipartFile

我尝试将 String by Long 更改为 dbfileEntity,但在构建 uri 路径之后遇到了一些麻烦……我不明白为什么它不起作用,因为我使用了 @Table 注释。 有人可以解释一下吗? 谢谢

【问题讨论】:

【参考方案1】:

这是一个错字。在这里,您是说您正在通过files 进行映射:

@OneToOne(mappedBy = "files")
private Article article;

其中字段名称为file

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "files_id", referencedColumnName = "id")
private MultipartFile file;

您应该修复mappedBy 属性:

@OneToOne(mappedBy = "file")
private Article article;

也是类型不对,应该是:

private DBFile file;

【讨论】:

好游戏,可以!但是现在我尝试仅上传文件时遇到了同样的问题...内容类型'multipart/form-data;boundary=-------------------- ------096279328385565755529413;charset=UTF-8' not supported] 非常感谢! @JeanReno 通过查看该错误很难说,我建议为此创建一个新问题

以上是关于JPA 与 multipartfile 的一对一关系的主要内容,如果未能解决你的问题,请参考以下文章

JPA学习笔记——映射一对多关联关系

java 使用JPA注释的项目实体与供应商建立多对一关系

JPA关系映射之one-to-many和many-to-one

JPA:获取双向多对一关系

JPA/Hibernate - 多态多对一关系设计

JPA命名查询中的多对一关系