mysql - 在另一个实体中多次使用同一个实体
问题描述
我正在使用 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;
}
我的问题是:如何实现前面描述的逻辑,以便类中有 2 个Translation
字段Channel
?到目前为止,我已经使用@OneToOne
注释进行了尝试,但它不起作用。
解决方案
我不确定您要实现哪种映射,但这会起作用:
@Entity
@Table(name = "CHANNEL")
public class Channel {
@Id
@Column(name = "ID")
private String id;
@OneToOne(cascade = CascadeType.ALL)
private Translation nameTranslations;
@OneToOne(cascade = CascadeType.ALL)
private Translation descriptionTranslations;
}
或者,如果您想要其他实体表上的列:
@Entity
@Table(name = "CHANNEL")
public class Channel {
@Id
@Column(name = "ID")
private String id;
@OneToOne(mapped="name", cascade = CascadeType.ALL)
private Translation nameTranslations;
@OneToOne(mapped="description", cascade = CascadeType.ALL)
private Translation descriptionTranslations;
}
@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;
@OneToOne
private Channel name;
@OneToOne
private Channel description;
}
有关一对一关联,请参阅Hibernate ORM 文档。
推荐阅读
- javascript - React:如何在 ReactJS 中重置状态值
- sql-server - 将值封装在单引号中时,Hive 中的小数字段仅返回结果
- reactjs - 为以太坊 Solidity 智能合约构建 React 前端
- sql-server - 如何在 SQL Server 中显示同一个人拥有所有颜色代码?
- python - 为什么 if 语句的语法无效?
- c# - App.Config PostgreSQL Entity Framework 6 的 Npgsql C# 问题
- python-3.x - 如何在 Python 上使用 rawpy 读取图片的 RGB 值
- python - 如果条件为真,我如何比较变量然后分配一个新值?
- git - 带有奇怪分支的 SVN 到 Git 迁移
- java - Java 的未来