【发布时间】:2021-07-19 16:49:23
【问题描述】:
我正在使用 JPA 和 Hibernate 实现一个 Spring Boot 服务器,其中有 2 个实体:Channel 和 Translation。
Channel 实体有两个字段(nameTranslations 和 descriptionTranslations 应包含法语和英语两种语言的频道名称和描述),其类型为 Translation,如下所述:
班级Channel
@Entity
@Table(name = "CHANNEL")
public class Channel {
@Id
@Column(name = "ID")
private String id;
@OneToOne(mappedBy = "channel", cascade = CascadeType.ALL)
private Translation nameTranslations;
@OneToOne(mappedBy = "channel", cascade = CascadeType.ALL)
private Translation descriptionTranslations;
}
和
班级Translation
@Entity()
@Table(name = "TRANSLATION")
public class Translation {
@Id
@Column(name = "ID")
private String id;
@Column(length = 1024)
private String en;
@Column(length = 1024)
private String fr;
}
我的问题是:如何实现前面描述的逻辑,以便 Channel 类中有 2 个 Translation 字段?到目前为止,我已经使用@OneToOne 注释进行了尝试,但它不起作用。
【问题讨论】:
-
请提供您要映射的 db 架构的 ER 图。
-
为什么你的 Channel->Translation 映射中已经映射了?这告诉 JPA 在控制外键的 Channel 实体中有一个“通道”属性 - 但没有。删除它将使 JPA 根据属性名称在通道表中使用默认的 fk 定义,这似乎是您想要的。
标签: mysql hibernate jpa spring-data-jpa