【发布时间】:2021-01-11 18:37:42
【问题描述】:
我们正在重组我们的服务和数据。我们有 2 个实体 Employee、CostCenter
@Entity
@Table(name = "employees")
data class Employee(
@Id
val id: Long? = null,
@Column(name = "id_dept")
val departmentId: Long,
@Column(name = "business_email_address")
var businessEmailAddress: String? = null,
@OneToOne
@JoinTable(
name = "employee_cost_centers",
joinColumns = [JoinColumn(
name = "employee_id",
referencedColumnName = "id"
)]
)
@JoinColumn(name = "cost_center_id")
var costCenter: CostCenter? = null
)
@Entity
@Table(name = "cost_centers")
data class CostCentre(
@Id
val id: Long,
@Column
var name: String? = null,
@Column(name = "deleted")
var isDeleted: Boolean = false
)
员工表
| id | id_dept | business_email_address |
|----|-------------|------------------------|
| 1 | Finance | finance@example.com |
| 2 | HR | hr@example.com |
| 3 | Development | dev@example.com |
| 4 | Marketing | marketing@example.com |
cost_centers 表
| id | name | deleted |
|-----|-----------------------|---------|
| 10 | FinanceCostCenter | false |
| 20 | HRCostCenter | false |
| 30 | DevelopmentCostCenter | false |
| 40 | MarketingCostCenter | false |
当我们在Employee 实体中使用@JoinTable 时,我们有第三个表,其中包含名称为employee_cost_centers 的员工和成本中心之间的映射。
employee_cost_centers 表
| cost_center_id | employee_id |
|----------------|-------------|
| 10 | 1 |
| 20 | 2 |
| 30 | 3 |
| 40 | 4 |
现在我们想将成本中心转移到它自己的微服务中。所以cost_centers 表也将移至新服务。
我想通过创建类似的新实体将Employee 表中的costCenter 引用直接映射到第三个映射表employee_cost_centers
@Entity
@Table(name = "employee_cost_centers")
data class EmployeeCostCenter(
@Id
@Column(name="cost_center_id")
val costCenterid: Long,
@Column(name="employee_id")
val employeeId: Long
)
但是我应该如何将它映射到Employee 实体中?
我对 JPA/Hibernate 相当陌生。非常感谢专家的任何帮助。
【问题讨论】:
标签: spring-boot hibernate kotlin jpa spring-data-jpa