无处生成的唯一密钥

时间:2013-02-07 12:24:11

标签: mysql hibernate jpa many-to-many

我有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; }

2 个答案:

答案 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)

所以,正如克里斯所说,这是识别每个部分的方法。