Java @OneToMany映射和创建具有相同类型实体的联接表在JPA中失败
我有一个Java @OneToMany映射和创建具有相同类型实体的联接表在JPA中失败,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个员工课程。Worker类扩展Employee,而Leader类扩展Worker 每个Leader都有一个列表public list workers responsiblefor=new ArrayList()。我想创建一个联接表,以说明一个领导者是否负责一个或多个工作者 @Entity @Inheritance @DiscriminatorColumn(name="EMP_TYPE") @Table(name="EMPLOYEES") public abstract class Empl
员工
课程。Worker
类扩展Employee
,而Leader
类扩展Worker
每个Leader
都有一个列表public list workers responsiblefor=new ArrayList()代码>。我想创建一个联接表,以说明一个领导者是否负责一个或多个工作者
@Entity
@Inheritance
@DiscriminatorColumn(name="EMP_TYPE")
@Table(name="EMPLOYEES")
public abstract class Employee implements Printable, Serializable {
@Id
@GeneratedValue
@Column(name = "employee_id", unique = true)
private int id;
@Column(name = "position")
@Enumerated(EnumType.STRING)
private Position position;
@Column(name = "name")
private String name;
@Column(name = "salary")
private Double salary;
@Transient
public List<Project> projectsWorkingOn = new ArrayList<>();
public Employee() {
}
}
领导者
:
@Entity
public class Worker extends Employee {
@Id
@GeneratedValue
@Column(name = "worker_id", unique = true)
private int id;
public Worker() {
}
}
@Entity
public abstract class Leader extends Worker {
public Leader() {
}
public Leader(Position position, String name, Double salary) {
super(position, name, salary);
}
@OneToMany
@JoinTable(name="WORKERS_RESPONSIBLE_FOR",
joinColumns = {@JoinColumn(name="responsible_for")})
public List<Worker> workersResponsibleFor = new ArrayList<>();
}
@实体
公共抽象类领班{
公共领导人(){
}
公共领导(职位、字符串名称、双薪){
超级(职位、姓名、工资);
}
@独身癖
@JoinTable(name=“工人负责”,
joinColumns={@JoinColumn(name=“responsible_for”)}
public List workersResponsibleFor=new ArrayList();
}
我确信,Leader
类中的列表注释是错误的,因为每次我尝试使它工作时都会出现很多错误。如何正确地对其进行注释,以将职责收集到新的连接表中?一个“错误”是在原始基类(定义PK)的子类中添加更多的@Id
字段。除此之外。。。为什么不发布“很多错误”呢?为什么要使用联接表来处理一对多关系?他对联接表的使用与问题无关。您可以使用联接表或FK;他选择加入这张桌子。两者都应该起作用