我有2个表与 @ManyToMany 关系字段。在休眠cfg我有
<property name="hbm2ddl.auto">update</property>
在应用程序启动期间创建的表在 PartId 列上设置了 UNIQUE 键,这是
@JoinColumn(name="PartId")}
@ManyToMany 关系中的。我没有在任何地方设置此列应该具有唯一键。这是默认的自动创建行为吗?
数据库 MySQL 5.5
感谢。
UPD:
全场desc是:
@ManyToMany
@JoinTable(name="Part_Dev",
joinColumns={@JoinColumn(name="PartId")},
inverseJoinColumns= {@JoinColumn(name="DevCode")})
public List<Dom> getDom() { return dom; }
UPD 2
抱歉,我看到我没有提到它。 部件表中的唯一键@Entity @Table(name="Parts")
public class Parts implements Serializable{
@ManyToMany
@JoinTable(name="Part_Dev",
joinColumns={@JoinColumn(name="PartId")},
inverseJoinColumns= {@JoinColumn(name="DevCode")})
public List<Dom> getDom() {
return dom; }
@Column(name="PartId")
public Integer getPartId() {
return partId; }
答案 0 :(得分:0)
你需要指定@JoinTable来实现它。例如,如果您有两个实体:Employee和Project处于多对多关系中。你需要一边有@JoinTable。
@Entity
public class Employee {
@Id private int id;
private String name;
@ManyToMany
@JoinTable(name="EMP_PROJ",
joinColumns=@JoinColumn(name="EMP_ID"),
inverseJoinColumns=@JoinColumn(name="PROJ_ID"))
private Collection<Project> projects;
答案 1 :(得分:0)
所以,正如克里斯所说,这是识别每个部分的方法。