我有以下表格: 标签,员工,位置。 员工和位置可以有更多标签。我认为最好为这些关系创建新表:employee_tag和location_tag。
如何使用JPA执行此操作?现在我得到了这个: 员工类:
@OneToMany()
@JoinTable(name="employee_tag", joinColumns={
@JoinColumn(name="ID_employee", referencedColumnName="ID")
}, inverseJoinColumns={
@JoinColumn(name="ID_tag", referencedColumnName="ID")
})
private Collection<Tag> tags;
标记类:
@ManyToOne()
private Employee employee;
它创建一个名为employee_tag的新表,但tag仍然有一个employee_ID列。如何将标签链接到此表?
答案 0 :(得分:2)
如果您需要单向一对多关联,则不必将员工关联放在标记类中,您必须在Employee类中声明关联。
@Entity
public class Employee {
@OneToMany()
@JoinTable(name="employee_tag", joinColumns={
@JoinColumn(name="ID_employee", referencedColumnName="ID")
}, inverseJoinColumns={
@JoinColumn(name="ID_tag", referencedColumnName="ID")
})
public Collection<Tag> tags;
...
}
@Entity
public class Tag {
...
}
否则您可以执行双向关联,如下所示:
@Entity
public class Employee {
@OneToMany(mappedBy="troop")
public Collection<Tag> tags;
...
}
@Entity
public class Tag {
@ManyToOne
@JoinColumn(name="employee_fk")
public Employee employee;
...
}