我可以为多对多关系创建自定义联接表。连接表由一个复合主键和一个类型为float的附加列组成。
它对我来说很好用,但现在我也想给组合键一个自己的名字。
直到生成名称。它的第一部分是MyCustomJoinTable类中的属性名称的名称,后跟一个下划线和所引用表中主键的名称。
因此,在我的情况下,名称显示为empl_enumber和proj_pronumber(如果我通过SQL Server Management Studio检查生成的表)
如何用自己的名称替换生成的主键名称?我的课看起来像这样。
@Entity
public class MyCustomJoinTable {
// creates the composite primary key
@EmbeddedId
private CompositeKeyClass compositeKey;
@ManyToOne
@MapsId("employee_id") // maps to attribute with this name in class CompositeKeyClass
private Employee empl;
@ManyToOne
@MapsId("project_id") // maps to attribute with this name in class CompositeKeyClass
private Project proj;
@Column(nullable=true)
private float xyz; // additional custom column in join table
}
@Entity
public class Employee {
// ...
@OneToMany(mappedBy="empl") // mapps to attribute with this name in CompositeKeyClass
private List<MyCustomJoinTable> projects;
// ...
}
@Entity
public class Project {
// ...
@OneToMany(mappedBy="proj") // mapps to attribute with this name in CompositeKeyClass
private List<MyCustomJoinTable> employees;
// ...
}