JPA新表中的多通

JPA新表中的多通,jpa,Jpa,我有以下表格: 标签、员工、位置。 员工和地点可以有更多标签。我认为最好为这些关系创建新表:employee_标记和location_标记 如何使用JPA实现这一点?现在我知道了: 员工类别: @OneToMany() @JoinTable(name="employee_tag", joinColumns={ @JoinColumn(name="ID_employee", referencedColumnName="ID") }, inverseJoinColumns={ @Jo

我有以下表格: 标签、员工、位置。 员工和地点可以有更多标签。我认为最好为这些关系创建新表:employee_标记和location_标记

如何使用JPA实现这一点?现在我知道了: 员工类别:

@OneToMany()
@JoinTable(name="employee_tag", joinColumns={
    @JoinColumn(name="ID_employee", referencedColumnName="ID")
}, inverseJoinColumns={
    @JoinColumn(name="ID_tag", referencedColumnName="ID")
})
private Collection<Tag> tags;

它创建了一个名为employee_tag的新表,但tag仍有一个列employee_ID。如何将标记链接到此表?

如果需要单向一对多关联,则不必将employee关联放入tag类中,而必须在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 {      
   ...
}
@实体
公营雇员{
@OneToMany()
@JoinTable(name=“employee\u tag”,JointColumns={
@JoinColumn(name=“ID\u employee”,referencedColumnName=“ID”)
},反向连接列={
@JoinColumn(name=“ID\u标记”,referencedColumnName=“ID”)
})
公众收集标签;
...
}
@实体
公共类标记{
...
}
否则,您可以按如下方式进行双向关联:

@Entity
public class Employee {
   @OneToMany(mappedBy="troop")
   public Collection<Tag> tags;
   ...
}

@Entity
public class Tag {
   @ManyToOne
   @JoinColumn(name="employee_fk")
   public Employee employee;
   ...
}
@实体
公营雇员{
@OneToMany(mappedBy=“部队”)
公众收集标签;
...
}
@实体
公共类标签{
@许多酮
@JoinColumn(name=“employee\u fk”)
公共雇员;
...
}

看看

See Oke nice,我想要的几乎是默认值。但是标记表中仍然有一个雇员ID。
@Entity
public class Employee {
   @OneToMany(mappedBy="troop")
   public Collection<Tag> tags;
   ...
}

@Entity
public class Tag {
   @ManyToOne
   @JoinColumn(name="employee_fk")
   public Employee employee;
   ...
}