0

@ManyToMany関係フィールドを持つ 2 つのテーブルがあります。休止状態のcfgで私は持っています

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

アプリケーションの起動時に作成されるテーブルには、 PartId列に設定されたUNIQUEキーがあります。

@JoinColumn(name="PartId")}

@ManyToMany関係で。この列に一意のキーが必要であることをどこにも設定しませんでした。これはデフォルトの自動作成動作ですか?

DBは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

それで、クリスが言ったように、それは各部分を識別する方法でした。

于 2013-02-08T09:00:05.690 に答える
0

それを実現するには @JoinTable を指定する必要があります。たとえば、従業員とプロジェクトの 2 つのエンティティが多対多の関係にあるとします。片側に @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 に答える