java - 如何使用 Hibernate 和 Spring Data JPA 正确注释两个实体之间的关系?

标签 java spring hibernate jpa spring-data-jpa

目标:

我正在构建一个有概述的网络应用程序。 在本概述中,我从后端加载分类广告。 每个分类只有一个缩略图。

首先,概述加载分类,然后尝试使用分类的 ID 在相关 Spring Data JPA 存储库中查找关联的缩略图。

当前状态: 分类表看起来不错。缩略图表缺少对分类的引用。

期望的状态: 我希望缩略图表包含对分类 ID 的引用,以便我可以查询分类的缩略图。

ERD(~ish):

enter image description here

实体类:

分类:

import javax.persistence.*;

@Entity
public class Classified {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String summary;
    private String description;

    public Classified() { }

    public Classified(String summary, String description) {
        this.summary = summary;
        this.description = description;
    }

    public long getId() {
        return id;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

缩略图:

import javax.persistence.*;

@Entity
public class Thumbnail {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @OneToOne
    @JoinColumn(name = "id")
    private Classified classified;

    @Column(name="bytes", columnDefinition="VARBINARY(10000)")
    private byte[] bytes;

    public Thumbnail() {
    }

    public Thumbnail(Classified classified, byte[] bytes) {
        this.classified = classified;
        this.bytes = bytes;
    }
}

表格(以一些示例数据开始):

分类: enter image description here

缩略图: enter image description here

最佳答案

您应该只更改缩略图类中 JoinColumn 的名称,例如:

@JoinColumn(name = "classifiedId",referencedColumnName = "id")
private Classified classified;

为列命名

关于java - 如何使用 Hibernate 和 Spring Data JPA 正确注释两个实体之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59552739/

相关文章:

java - 为 PositionalList 添加方法

java - Spring引导 Autowiring 类不会在常规类中实例化

java - 由于服务类错误,Spring Boot 应用程序未启动

hibernate - org.hibernate.hql.internal.ast.QuerySyntaxException : unexpected token: Apr near line 1, 第 81 列

java - 我的 Int() 总是返回 0?

java - 如果一个线程试图获取它已经持有的锁会发生什么?

java - Android 日历 - 从星期一开始一周

java - Web 服务和用户的 Spring 安全性

java - 使用实体监听器测量数据库操作所花费的时间

java - 如何进行条件级联验证(Hibernate)?