31

クラスがある場合:

@Entity
Order implements Serializable {
    @Id
    private Integer id;
    ...
}

と:

@Entity
OrderLine implements Serializable {
    @Id
    private Integer id;

    @ManyToOne
    Order order;
    ...
}

プロパティの順序がマップされる行名は?

order_id, ORDER_ID or Order_id?

( @JoinColumn(name='order_id') の省略は意図的です)

4

2 に答える 2

38

あなたの質問が理解できないかもしれません。しかし、以下のようなものは必要ありませんか?

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="order_id", nullable=false)
Order order;

下記は用例です

于 2010-10-18T22:53:57.343 に答える
33

JoinColumnJPA 1.0仕様が注釈について書いていることは次のとおりです。

9.1.6 JoinColumn アノテーション

...

name注釈要素は、外部キー列の名前を定義します。残りの注釈要素 ( 以外referencedColumnName) は、この列を参照し、列注釈と同じセマンティクスを持ちます。

単一の結合列があり、name注釈メンバーが欠落している場合、結合列名は次の連結として形成されます。参照関係プロパティまたは参照エンティティのフィールドの名前。"_"; 参照される主キー列の名前。エンティティにそのような参照関係プロパティまたはフィールドがない場合 (つまり、結合テーブルが使用されている場合)、結合列名は次の連結として形成されます。エンティティの名前。"_"; 参照される主キー列の名前。

...

したがって、あなたの例では、外部キー列のデフォルト名はorder_id.

参考文献

  • JPA 1.0 仕様
    • 9.1.6項「JoinColumn注釈」
于 2010-10-18T23:05:33.930 に答える