ユニークキーはどこからも生成されません

私は @ManyToMany の関係フィールドを持つ2つのテーブルを持っています。 hibernate cfgで私は持っている

update

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

@JoinColumn(name="PartId")}

@ManyToMany の関係にあります。私はこの列にユニークなキーがあるべき場所を設定しませんでした。これはデフォルトの自動作成動作ですか?

The DB is MySQL 5.5

ありがとう。

UPD:

完全なフィールドdescは:

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

UPD 2

申し訳ありませんが、私はそれを言及していない参照してください。 Parts テーブルの一意のキー、

@Entity @Table(name="Parts") 
public class Parts implements Serializable{ 

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

  @Column(name="PartId")
public Integer getPartId() {
  return partId; }
0
@JoinColumn(name = "PartId")は、 "Part_Dev"のフィールドを指定します。デフォルトでは、Partの主キーフィールドを指す必要があります。パーツにIDを表示していないか、パーツの「パーツID」がユニークキー設定で生成される理由を示す他のマッピング/注釈は表示されていません。
追加された 著者 Chris,
PartsIdがPartsのpkである場合、それは一意である必要があります。そうでなければ、異なるPartsインスタンスを区別する方法がありません。
追加された 著者 Chris,
ええ、それは自分自身ですが。ありがとう、クリス
追加された 著者 frf,

2 答え

@JoinTableを指定する必要があります。たとえば、EmployeeとProjectの2つのエンティティが多対多の関係にある場合です。片面に@JoinTableが必要です。

@Entity
public class Employee {
@Id private int id;
private String name;
@ManyToMany
@JoinTable(name="EMP_PROJ",
[email protected](name="EMP_ID"),
[email protected](name="PROJ_ID"))
private Collection projects;
0
追加された
テーブル PartId はユニークですか?それは関係の所有側からの主体の主キーです。結合表で一意であってはいけません。
追加された 著者 spiritwalker,
私は自分のコードで @JoinTable を持っています。テーブルが生成され、アプリケーションがOKにデプロイされます。質問は、なぜ私が明示的に要求しなかったときに一意のキーが生成されるのかです。
追加された 著者 frf,

だから、Chrisが言ったように、それが各部分を識別する方法でした。

0
追加された