0

我有 2 个带有@ManyToMany关系字段的表。在休眠配置文件中我有

<property name="hbm2ddl.auto">update</property>

在应用程序启动期间创建的表在PartId列上设置了唯一键,即

@JoinColumn(name="PartId")}

@ManyToMany关系中。我没有在任何地方设置此列应具有唯一键。这是默认的自动创建行为吗?

数据库是MySQL 5.5

谢谢。

升级版:

完整的字段描述是:

@ManyToMany
  @JoinTable(name="Part_Dev", 
    joinColumns={@JoinColumn(name="PartId")}, 
    inverseJoinColumns= {@JoinColumn(name="DevCode")})
    public List<Dom> getDom() { return dom; }

更新 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; }
4

2 回答 2

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;
于 2013-02-07T12:27:55.020 回答
0

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

于 2013-02-08T09:00:05.690 回答