【发布时间】:2025-12-11 12:15:01
【问题描述】:
我找不到将某些实体映射到我的 SQL 表的方法。我有一个 EMPLOYEES 表(带有 PK employee_id)、一个 DAYS_OF_WEEK 表(带有 PK day_of_week_id)和一个 EMPLOYEES_SCHEDULES 表(带有employee_id、day_of_week_id 和 start_time 的复合 PK,是上述表的前两个属性 FK,而 end_time 是唯一的非PK属性)。
EMPLOYEES
PK employee_id
role_id FK
DAYS_OF_WEEK
PK day_of_week_id
name
EMPLOYEES_SCHEDULES
PK | employee_id FK
| day_of_week_id FK
| start_time
end_time
我必须遵循的类图表明 Employee 有 0 个或多个 EmployeeSchedule 对象相关联,而 EmployeeSchedule 有 1 个或多个 DayOfWeek 对象相关联。所以,Java 中的类应该是这样的:
@Entity
@Table(name = "EMPLOYEES")
public class Employee {
@Id
@Column(name = "employee_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int employeeId;
@OneToOne
@JoinColumn(name = "role_id", referencedColumnName = "role_id")
private Role role;
// I don't know how to map this
private List<EmployeeSchedule> employeeSchedule;
}
@Entity
@Table(name = "EMPLOYEES_SCHEDULES")
public class EmployeeSchedule {
@Id
@Column(name = "start_time")
private LocalDate startTime;
@Basic
@Column(name = "end_time")
private LocalDate endTime;
// I don't know how to map this
private List<DayOfWeek> dayOfWeek;
}
@Entity
@Table(name = "DAYS_OF_WEEK")
public class DayOfWeek {
@Id
@Column(name = "day_of_week_id")
private byte dayId;
@Basic
@Column(name = "name")
private String name;
}
我知道 DayOfWeek 可能会替换为枚举,但这不是本文的重点。如果可能,请不要建议更改类图的结构,因为我必须严格使用它(关系也不应该是双向的)。但是我制作的表格是否足以映射类?如果是这样,我该如何映射它们?
【问题讨论】:
标签: java spring-boot jpa