1

エンティティに一方向の onetomany オブジェクトがあります

@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="reference")

このエンティティと子エンティティの FK 列と PK 列はどちらも「参照」です

この結合用に SQL が生成されると、デフォルトの objectname + _ + PK "pub_reference" が使用され、渡した名前は無視されます。

name= は何でも変更できますが、常に無視されます。

単一の列の結合であっても、名前のデフォルトの動作をオーバーライドするにはどうすればよいですか?

親会社

@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="bob")
private Collection<PubDisplayText> pubDisplayText;

子エンティティ

private Pub pub;

@Id
@XmlTransient
    public Pub getPub() {
    return pub;
}

public void setPub(Pub pub) {
    this.pub = pub;
}

参照http://docs.oracle.com/javaee/6/api/javax/persistence/JoinColumn.html#name%28%29

4

1 に答える 1

1

一方向の1対多のマッピングでは、結合テーブルを使用する必要があります。@ OneToMany.mappedBy要素を指定することにより、双方向の1対多を意味します。その結果、マッピングは「所有」マッピング(「mappedBy」で指定されたマッピング)から結合列名を取得します。ここでは何も指定されていないため、デフォルトの結合列が使用されます。

于 2012-09-21T22:43:58.690 に答える