This question already has answers here:
JPA many to many with extra column
(3个答案)
4年前关闭。
我在
我是JPA的新手,无法定义具有关系的实体。我应该为
编辑:似乎重复,但是我有明确的要求要使用
当然,您可以选择使用
(3个答案)
4年前关闭。
我在
Employee
和SkillSet
表之间有多对多关系,每个关系都有额外的列numberOfYearsemployeeId skillSetId numberOfYears
10 101 2
我是JPA的新手,无法定义具有关系的实体。我应该为
Employee_SkillSet
表定义一个新的实体类吗?还是可以在Employee
和SkillSet
类中定义很多对很多的关系?我在哪里指定numberOfYears
列?编辑:似乎重复,但是我有明确的要求要使用
@IdClass
,并且实体之一是@MappedSuperclass
,因此必须定义ID实例和引用的实体对象。 最佳答案
由于您需要元组的另一个字段(Employee,SkillSet),因此您必须创建另一个实体。
@Entity
public class Employee implements Serializable {
private @Id Long id;
@OneToMany(mappedBy="employee")
private List<EmployeeSkillSet> skillSets;
}
@Entity
public class SkillSet implements Serializable {
private @Id Long id;
}
@Entity
public class EmployeeSkillSet implements Serializable {
private @Id Long id;
private @ManyToOne Employee employee;
private @ManyToOne SkillSet skillSet;
private @Basic int numberOfYears;
}
当然,您可以选择使用
@IdClass
来使(“ employee”,“ skillSet”)成为EmployeeSkillSet
的主键,如下所示:@Entity @IdClass(EmployeeSkillSet.Key.class)
public class EmployeeSkillSet implements Serializable {
private @Id @ManyToOne Employee employee;
private @Id @ManyToOne SkillSet skillSet;
private @Basic int numberOfYears;
public static class Key implements Serializable {
private Long employee; // plus getter+setter
private Long skillSet; // plus getter+setter
// plus hashCode, equals
}
}
10-05 20:12